在android中的imageview顶部放置一个textview

  • 我有一个listview ,它有一个可以垂直滚动的imageview
  • 我正在尝试在Imageview上放置一个textview
  • 这两个视图必须可见

  1. 可能吗 ?
  2. 如果是的话,如何编程?
  3. 我需要做些什么改变?

list_view_item_for_images.xml

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/flag" android:layout_width="fill_parent" android:layout_height="250dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:scaleType="fitXY" android:src="@drawable/ic_launcher" /> </RelativeLayout> 

它给出如下的输出

在这里输入图像描述

如何做下面的事情

在这里输入图像描述

注意:菜1和2是textviews

这应该给你所需的布局:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/flag" android:layout_width="fill_parent" android:layout_height="250dp" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:scaleType="fitXY" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="20dp" android:layout_centerHorizontal="true" /> </RelativeLayout> 

android:layout_marginTop="20dp" ,看看哪一个更适合你。 使用id textviewdynamic设置android:text值。

由于RealativeLayout堆栈的孩子,在ImageView把它放在ImageView之后,定义TextView。

注意:类似的结果可以获得使用FrameLayout作为父母,以及使用任何其他的Android容器的效率增益。 感谢Igor Ganapolsky (见下面的评论)指出这个答案需要更新。

尝试这个:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rel_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/ImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src=//source of image /> <TextView android:id="@+id/ImageViewText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@id/ImageView" android:layout_alignTop="@id/ImageView" android:layout_alignRight="@id/ImageView" android:layout_alignBottom="@id/ImageView" android:text=//ur text here android:gravity="center" /> 

希望这可以帮助你。

你可以使用framelayout来实现这一点。

如何使用framelayout

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:src="@drawable/ic_launcher" android:scaleType="fitCenter" android:layout_height="250px" android:layout_width="250px"/> <TextView android:text="Frame Demo" android:textSize="30px" android:textStyle="bold" android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center"/> </FrameLayout> 

ref: tutorialspoint

只需在Eclipse中将TextView拖放到ImageView上即可

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="48dp" android:layout_marginTop="114dp" android:src="@drawable/bluehills" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/imageView1" android:layout_centerVertical="true" android:layout_marginLeft="85dp" android:text="TextView" /> </RelativeLayout> 

而这个输出上面的xml 在这里输入图像描述

正如您在OP中所提到的,您需要以编程方式在ImageView上叠加Text 。 你可以通过将其放置在“ Canvas和“ Paint的帮助下,将ImageView绘制成可Paint

  private BitmapDrawable writeTextOnDrawable(int drawableId, String text) { Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true); Typeface tf = Typeface.create("Helvetica", Typeface.BOLD); Paint paint = new Paint(); paint.setStyle(Style.FILL); paint.setColor(Color.WHITE); paint.setTypeface(tf); paint.setTextAlign(Align.CENTER); paint.setTextSize(11); Rect textRect = new Rect(); paint.getTextBounds(text, 0, text.length(), textRect); Canvas canvas = new Canvas(bm); canvas.drawText(text, xPos, yPos, paint); return new BitmapDrawable(getResources(), bm); } 

你也可以试试 我只使用framelayout。

  <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/cover" android:gravity="bottom"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="Hello !" android:id="@+id/welcomeTV" android:textColor="@color/textColor" android:layout_gravity="left|bottom" /> </FrameLayout> 

也许你应该先写ImageView,然后再写TextView。 这有时可以帮助。 这很简单,但我希望它可以帮助别人。 🙂