Добавление текста в ImageView в Android - PullRequest
43 голосов
/ 04 августа 2010

Я хочу использовать ImageView для показа какого-то необычного сообщения.

Поэтому я хочу добавить текст к этому ImageView.Как это сделать?

Ответы [ 9 ]

80 голосов
/ 25 ноября 2011

Чтобы добавить текст к вашему ImageView, вы можете сделать это:

<RelativeLayout> // Only works inside a RelativeLayout
    <ImageView
        android:id="@+id/myImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/myImageSouce" />

    <TextView
        android:id="@+id/myImageViewText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/myImageView"
        android:layout_alignTop="@+id/myImageView"
        android:layout_alignRight="@+id/myImageView"
        android:layout_alignBottom="@+id/myImageView"
        android:layout_margin="1dp"
        android:gravity="center"
        android:text="Hello"
        android:textColor="#000000" />
 </RelativeLayout>
26 голосов
/ 17 сентября 2012

Вы также можете использовать TextView и установить фоновое изображение на то, что вы хотели в ImageView. Кроме того, если вы использовали ImageView в качестве кнопки, вы можете установить ее на нажатие

Вот базовый код для TextView, который показывает изображение с текстом поверх него.

<TextView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/your_image"
    android:text="your text here" />
20 голосов
/ 01 июля 2013

Лучший вариант для использования текста и изображения в одном представлении попробуйте это:

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:drawableBottom="@drawable/ic_launcher"

        android:text="TextView" />
13 голосов
/ 30 июля 2013

Используйте drawalbeLeft / Right / Bottom / Top в TextView, чтобы визуализировать изображение в соответствующей позиции.

        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/image"    
        android:text="@strings/text" 
        />
7 голосов
/ 04 октября 2013

Я знаю, что этот вопрос был и ушел, но если кто-то еще наткнулся на это, я хотел бы сообщить им.Это может показаться не интуитивно понятным, но вы можете использовать кнопку с активным нажатием кнопки или что-то еще.Это потому, что кнопка позволяет устанавливать drawableLeft, drawableRight, drawableTop и т. Д. В дополнение к тексту.

  <Button
  android:id="@+id/button1"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/border_box1"
  android:drawableLeft="@drawable/ar9_but_desc"
  android:padding="20dp"
  android:text="@string/ar4_button1"
  android:textColor="@color/white"
  android:textSize="24sp" />

Новая информация: Кнопка может иметь значки в drawableLeft, drawableRight, drawableTop,и drawableBottom.Это делает стандартную кнопку намного более гибкой, чем кнопка изображения.Слева, справа, сверху и т. Д. - отношение к тексту в кнопке.На кнопке может быть несколько элементов для рисования, например один слева, один справа и текст посередине.

3 голосов
/ 14 марта 2012

Чтобы нарисовать текст непосредственно на холсте, выполните следующие действия:

  1. Создание элемента Paint в myImageView конструкторе

    Paint mTextPaint = new Paint();
    
  2. Используйте canvas.drawText в своем методе myImageView.onDraw():

    canvas.drawText("My fancy text", xpos, ypos, mTextPaint);
    

Изучите документацию по классам Paint и Canvas для добавления необычных эффектов.

3 голосов
/ 04 августа 2010

С помощью FrameLayout вы можете поместить текст поверх изображения, макет кадра, содержащий как imageView, так и textView.

Если этого недостаточно, и вы хотите что-то более необычное, например, «рисование» текста, вам нужно нарисовать текст на холсте - пример здесь: Как нарисовать текст RTL (арабский) на растровом изображении и получить его правильно заказал?

2 голосов
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:layout_weight="30" >

        <ImageButton
            android:id="@+id/imgbtnUploadPendingPods"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/upload_icon" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:paddingTop="30dp"
            android:text="@string/pendingpods"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </FrameLayout>
1 голос
/ 03 октября 2012

Вы можете использовать TextView для той же цели, но если вы хотите использовать то же самое с ImageView, то вам нужно создать класс и расширить ImageView, а затем использовать метод onDraw () для рисования текста на холсте. для более подробной информации посетите http://developer.android.com/reference/android/graphics/Canvas.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...