我有一个TextView,我想添加一个黑色边界沿其顶部和底部边界。我尝试添加android:drawableTop和android:drawableBottom到TextView,但这只会导致整个视图变成黑色。
<TextView
android:background="@android:color/green"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableTop="@android:color/black"
android:drawableBottom="@android:color/black"
android:text="la la la" />
有没有一种方法可以轻松地添加一个顶部和底部边界的视图(特别是TextView)在Android?
在android 2.2中,您可以执行以下操作。
创建一个xml可绘制对象,如/res/drawable/textlines.xml,并将其指定为TextView的背景属性。
<TextView
android:text="My text with lines above and below"
android:background="@drawable/textlines"
/>
xml / res / drawable - textlines。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#FF000000" />
<solid android:color="#FFDDDDDD" />
</shape>
</item>
<item android:top="1dp" android:bottom="1dp">
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#FFDDDDDD" />
<solid android:color="#00000000" />
</shape>
</item>
</layer-list>
这样做的缺点是你必须指定一个不透明的背景颜色,因为透明度是行不通的。(至少我是这么认为的,但我错了)。在上面的例子中,你可以看到第一个形状#FFdddddd的纯色被复制到了第二个形状的描边颜色中。
我的答案是基于@Emile的版本,但我使用透明的颜色而不是纯色。
这个例子将绘制一个2dp的底部边界。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<stroke android:width="2dp"
android:color="#50C0E9" />
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item android:bottom="2dp" >
<shape android:shape="rectangle" >
<stroke android:width="2dp"
android:color="@color/bgcolor" />
<solid android:color="@android:color/transparent" />
</shape>
</item>
</layer-list>
@color/bgcolor是背景颜色,你可以在上面绘制视图的边框。
如果你想改变边界的位置,用以下方法之一改变偏移量:
android:bottom="2dp"
android:top="2dp"
android:right="2dp"
android:left="2dp"
或者将它们组合成2个或更多边框:
android:bottom="2dp" android:top="2dp"