我想将背景设置为TextView
,我希望TextView
的大小与背景和文字的大小相同。
这是我的代码:
<TextView
android:id="@+id/attackeNameTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="13dp"
android:paddingTop="8dp"
android:paddingLeft="35dp"
android:paddingRight="35dp"
android:singleLine="true"
android:ellipsize="end"
android:textSize="12sp"
android:text="thej hhekj hejk hjkesd ks dkl jsalkj dkl"
android:background="@drawable/attackee_name_background"/>
结果是,文本恰好适合“填充框”内部,但背景是拉伸的。
我是否必须将固定的layout_width
分配给TextView
?
答案 0 :(得分:3)
修改
这是一种做任何你想做的hacky方式......
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:src="@drawable/something" />
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="TextView" />
</FrameLayout>
答案 1 :(得分:3)
如果您希望背景完全符合TextView
尺寸而不拉伸且文字适合内部,则必须使用9-patch
图像,或者必须设置固定尺寸等于图像尺寸。没有其他解决方案。
还要考虑padding
仅缩小文本框区域(背景不缩小),而margin
在TextView
框之外留出空格。
因此,如果背景图片为(image_width, image_height)
并且您希望在TextView
内留下填充而不拉伸背景并且不使用9-patch
图像,则必须设置固定大小至TextView
等于(image_width+paddingLeft+paddingRight, image_height+paddingTop+paddingBottom)
。