Android文字覆盖图像

时间:2011-03-09 08:09:22

标签: android android-imageview android-image

我有一个带有图像的imageView,在我要放置文本的图像上。我怎样才能做到这一点?

9 个答案:

答案 0 :(得分:155)

这就是我做的方式,它完全按照你在RelativeLayout中的要求工作:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativelayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <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 :(得分:14)

你可能想从不同的方面采取if:在背景上使用带有drawable的TextView似乎更容易:

 <TextView
            android:id="@+id/text"
            android:background="@drawable/rounded_rectangle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        </TextView>

答案 2 :(得分:6)

您希望使用FrameLayout或Merge布局来实现此目的。 Android开发指南就是一个很好的例子:Android Layout Tricks #3: Optimize by merging

答案 3 :(得分:6)

你可能

  • 创建一个从类ImageView和
  • 继承的新类
  • 覆盖方法onDraw。首先在该方法中调用super.onDraw()
  • 然后绘制一些想要显示的文本。

如果你这样做,你可以将它作为单个布局组件使用,这样可以更容易地与其他组件一起布局。

答案 4 :(得分:5)

有很多方法。您使用RelativeLayout或AbsoluteLayout。

对于亲戚,你可以让图像在左侧与父对齐,并且文本也与父对齐对齐...然后你可以在文本视图上使用边距和填充和重力来获得它在你想要的图像上排列。

答案 5 :(得分:2)

您可以使用TextView并将其背景更改为您要使用的图像

答案 6 :(得分:2)

为此,您只能使用一个带android:drawableLeft/Right/Top/Bottom的TextView将图像定位到TextView。此外,您可以使用android:drawablePadding=""

在TextView和drawable之间使用一些填充

像这样使用:

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

    android:drawableBottom="@drawable/yourDrawable"
    android:drawablePadding="10dp" 
    android:text="Look at the drawable below"/>

有了这个,您不需要额外的ImageView。也可以在TextView的多个面上使用两个drawable。

使用它将面临的唯一问题是drawable无法按照ImageView的方式进行缩放。

答案 7 :(得分:2)

尝试以下代码,这将有助于您`

  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="150dp">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/gallery1"/>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#7ad7d7d7"
        android:gravity="center"
        android:text="Juneja Art Gallery"
        android:textColor="#000000"
        android:textSize="15sp"/>
</RelativeLayout>

答案 8 :(得分:0)

以下代码可以帮助您

Book2

}

public class TextProperty {
private int heigt;                              //读入文本的行数
private String []context = new String[1024];    //存储读入的文本

/*
 *@parameter wordNum
 *
 */
public TextProperty(int wordNum ,InputStreamReader in) throws Exception {
    int i=0;
    BufferedReader br = new BufferedReader(in);
    String s;
    while((s=br.readLine())!=null){
        if(s.length()>wordNum){
            int k=0;
            while(k+wordNum<=s.length()){
                context[i++] = s.substring(k, k+wordNum);
                k=k+wordNum;
            }
            context[i++] = s.substring(k,s.length());
        }
        else{
            context[i++]=s;
        }
    }
    this.heigt = i;
    in.close();
    br.close();
}


public int getHeigt() {
    return heigt;
}

public String[] getContext() {

    return context;
}

}