在Android中向ImageView添加文本

Sha*_*shi 46 android text imageview

我想使用一个ImageView以奇特的方式显示一些消息.

所以我想为此添加文字ImageView.怎么做?

Ale*_*qui 83

要为您添加文本,您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>
Run Code Online (Sandbox Code Playgroud)

  • PS.:必须在RelativeLayout内 (8认同)
  • 这不是*推荐,因为它创建了附加布局.使用其他答案中建议的`TextView`. (6认同)
  • 在帖子中更好地包括这个PS.没有你的PS :)它不起作用:) (2认同)
  • 我不得不使用它,但是我想切换到TextView可以轻松解决它。 (2认同)

Bar*_*zky 27

您还可以使用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" />
Run Code Online (Sandbox Code Playgroud)

  • 这个问题是背景无法缩放. (3认同)

Sag*_* V. 21

在单个视图中使用文本和图像的最佳选项试试这个:

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

        android:drawableBottom="@drawable/ic_launcher"

        android:text="TextView" />
Run Code Online (Sandbox Code Playgroud)


Paw*_*ari 14

在TextView中使用drawalbeLeft/Right/Bottom/Top在相应位置渲染图像.

        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/image"    
        android:text="@strings/text" 
        />
Run Code Online (Sandbox Code Playgroud)

  • 图像将与TextView相邻,但不在文本视图之上. (4认同)

And*_*w S 7

我知道这个问题已经过去了,但是如果有人偶然发现了这个问题,我想让他们知道.这可能听起来不太直观,但你可以使用一个可点击设置为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" />
Run Code Online (Sandbox Code Playgroud)

新信息: 一个按钮可以在drawableLeft,drawableRight,drawableTop和drawableBottom中包含图标.这使得标准按钮比图像按钮更灵活.左,右,上等是与按钮中文本的关系.按钮上可以有多个drawable,例如左边一个,右边一个,中间是文本.


小智 6

要直接在画布上绘制文本,请执行以下操作:

  1. myImageView构造函数中创建成员 Paint 对象

    Paint mTextPaint = new Paint();
    
    Run Code Online (Sandbox Code Playgroud)
  2. canvas.drawText在您的myImageView.onDraw()方法中使用:

    canvas.drawText("My fancy text", xpos, ypos, mTextPaint);
    
    Run Code Online (Sandbox Code Playgroud)

探索 Paint 和 Canvas 类文档以添加奇特的效果。


Mat*_*adt 3

使用 FrameLayout,您可以将文本放置在图像视图的顶部,框架布局同时包含 imageView 和 textView。

如果这还不够,并且您想要一些更奇特的东西,例如“绘制”文本,则需要在画布上绘制文本 - 示例如下:如何将 RTL 文本(阿拉伯语)绘制到位图上并正确排序?