我有一个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?
我的答案是基于@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"
要改变这一点:
<TextView
android:text="My text"
android:background="@drawable/top_bottom_border"/>
我更喜欢“drawable/top_bottom_border.xml”中的这种方法:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:angle="270"
android:startColor="#000"
android:centerColor="@android:color/transparent"
android:centerX="0.01" />
</shape>
</item>
<item>
<shape>
<gradient
android:angle="90"
android:startColor="#000"
android:centerColor="@android:color/transparent"
android:centerX="0.01" />
</shape>
</item>
</layer-list>
这只是使边界,而不是一个矩形,将出现,如果你的背景有颜色。