在Android中向ImageView添加文本

时间:2010-08-04 10:22:48

标签: android text imageview

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

所以我想向此ImageView添加文字。怎么做?

9 个答案:

答案 0 :(得分:80)

要向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>

答案 1 :(得分:26)

您还可以使用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" />

答案 2 :(得分:20)

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

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

        android:drawableBottom="@drawable/ic_launcher"

        android:text="TextView" />

答案 3 :(得分:13)

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

        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/image"    
        android:text="@strings/text" 
        />

答案 4 :(得分: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" />

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

答案 5 :(得分:3)

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

如果这还不够,你想要更像“绘图”文字的东西,你需要在画布上绘制文字 - 样本在这里:How to draw RTL text (Arabic) onto a Bitmap and have it ordered properly?

答案 6 :(得分:3)

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

  1. myImageView构造函数

    中创建成员Paint对象
    Paint mTextPaint = new Paint();
    
  2. canvas.drawText方法中使用myImageView.onDraw()

    canvas.drawText("My fancy text", xpos, ypos, mTextPaint);
    
  3. 探索Paint和Canvas类文档以添加奇特的效果。

答案 7 :(得分: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>

答案 8 :(得分:1)

您可以将TextView用于相同的目的,但是如果要对ImageView使用相同的,则必须创建一个类并扩展ImageView,然后使用onDraw()方法将文本绘制到画布上。有关详细信息,请访问http://developer.android.com/reference/android/graphics/Canvas.html