Я хочу использовать ImageView
, чтобы причудливо показать какое-то сообщение.
Как добавить текст в ImageView
?
Я хочу использовать ImageView
, чтобы причудливо показать какое-то сообщение.
Как добавить текст в ImageView
?
Чтобы добавить текст к вашему 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>
TextView
, как предложено в других ответах.
- person Tautvydas; 17.11.2014
Вы также можете использовать 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" />
Лучший вариант использования текста и изображения в одном представлении:
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableBottom="@drawable/ic_launcher"
android:text="TextView" />
Используйте drawalbeLeft/Right/Bottom/Top в TextView для рендеринга изображения в соответствующей позиции.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/image"
android:text="@strings/text"
/>
Я знаю, что этот вопрос был и ушел, но если кто-то еще наткнулся на это, я хотел бы сообщить им об этом. Это может показаться неинтуитивным, но вы можете использовать кнопку с кликабельным значением false или что-то в этом роде. Это связано с тем, что кнопка позволяет установить 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. Это делает стандартную кнопку гораздо более гибкой, чем кнопку с изображением. Левое, правое, верхнее и т. д. — это отношение к тексту на кнопке. Вы можете иметь несколько рисунков на кнопке, например, один слева, один справа и текст посередине.
Чтобы нарисовать текст прямо на холсте, сделайте следующее:
Создайте член объекта Paint в конструкторе myImageView
Paint mTextPaint = new Paint();
Используйте canvas.drawText
в своем методе myImageView.onDraw()
:
canvas.drawText("My fancy text", xpos, ypos, mTextPaint);
Изучите документацию по классам Paint и Canvas, чтобы добавить необычные эффекты.
С помощью FrameLayout вы можете поместить текст поверх представления изображения, макет фрейма содержит как imageView, так и textView.
Если этого недостаточно и вы хотите что-то более причудливое, например, «рисование» текста, вам нужно нарисовать текст на холсте — образец здесь: Как нарисовать текст RTL (арабский) на растровом изображении и упорядочить его правильно?
Вы можете использовать TextView для той же цели, но если вы хотите использовать то же самое с ImageView, вам нужно создать класс и расширить ImageView, а затем использовать метод onDraw() для рисования текста на холсте. для получения более подробной информации посетите http://developer.android.com/reference/android/graphics/Canvas.html