在图像中嵌入文本

时间:2014-05-05 14:03:21

标签: android

我想在图片

中显示自定义文字(主要是人物信息)

enter image description here

我怎么能在android中做到这一点?例如,我有一个已知的图像大小(它因设备而异),并希望在特殊位置显示其中不同的文本大小(示例在链接上方)。

3 个答案:

答案 0 :(得分:0)

有几种方法可以实现这一目标。

我这样做的方法是将图像变成9-patch。要么不允许它伸展,要么标记要伸展的角色以外的区域。在任何一种情况下,使用右侧和底部区域来标记图像中您希望文本的位置。

然后,您只需将9-patch设置为TextView的背景,您的文本将被放置在9-patch中标记的区域。

另一种方法是使用带有RelativeLayoutImageView的{​​{1}},然后将TextView放在您需要的位置。但是,我发现尝试使用这种方法完美地定位视图是繁琐且容易出错的。 9补丁还允许您将此图像与几乎任何长度的文本一起使用,而不必担心文本在内容区域之外运行。

答案 1 :(得分:0)

您可以将图像设置为布局的背景,然后在该布局中添加一个或多个文本视图,并稍微调整边距直到它适合

例如看起来像这样:

<LinearLayout
android:background="@drawable/background"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

    <TextView
     android:id="@+id/firstLine"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:gravity="center_vertical"
     android:textSize="16sp" />

    <TextView
     android:id="@+id/secondLine"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:maxLines="2"
     android:textSize="12sp" />
</LinearLayout>

答案 2 :(得分:0)

好吧,正如我之前在评论中建议的那样,将ImageViewTextView放在RelativeLayout中,类似这样的内容(属性是随机的):

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/Image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_weight="0"
        android:background="#ff1234"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_below="@id/Image"
        android:layout_toRightOf="@id/Image"
        android:layout_weight="1"
        android:text="6363"
        android:background="#ff0034" />
</RelativeLayout>