TextView背景正在伸展

时间:2012-02-02 09:46:47

标签: android textview

我想将背景设置为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

2 个答案:

答案 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仅缩小文本框区域(背景不缩小),而marginTextView框之外留出空格。

因此,如果背景图片为(image_width, image_height)并且您希望在TextView内留下填充而不拉伸背景并且不使用9-patch图像,则必须设置固定大小至TextView等于(image_width+paddingLeft+paddingRight, image_height+paddingTop+paddingBottom)