在android中的imageview顶部放置一个textview
- 我有一个
listview
,它有一个可以垂直滚动的imageview
- 我正在尝试在
Imageview
上放置一个textview
- 这两个视图必须可见
- 可能吗 ?
- 如果是的话,如何编程?
- 我需要做些什么改变?
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 textview
dynamic设置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。 这有时可以帮助。 这很简单,但我希望它可以帮助别人。 🙂