可绘制的形状作为背景,底部有一条线

我使用drawable作为TextView的背景,只是在文本下面有一个分隔线。 用这个drawable-xml来描述它:

<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle"> <solid android:color="#FFDDDDDD" /> <gradient android:angle="0" android:startColor="#FFAAAAAA" android:endColor="#FFEEEEEE" /> </shape> </item> <item android:bottom="2dp"> <shape android:shape="rectangle"> <solid android:color="#FF000000" /> </shape> </item> </layer-list> 

但是这种方法在黑色矩形上方绘制了一个彩色矩形。 我想只有在形状的底部没有黑色矩形的线,因为黑色不透明。 我怎么能做到这一点?

一般来说,我尽可能less用背景混乱,除非绝对必要,因为这样做会覆盖具有聚焦,按下等状态的默认背景色。我build议只使用一个额外的视图(在垂直的LinearLayout中)像你需要的一样厚。 例如:

  <View android:background="#FF000000" android:layout_height="2dp" android:layout_width="fill_parent"/> 

这就是我在底部得到一条线的原因。 画出一个笔画,然后将项目向上和向两侧移动,使顶部和两侧不显示笔画:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="-6dp" android:left="-6dp" android:right="-6dp"> <shape> <solid android:color="#2b7996"/> <stroke android:color="#33b5e5" android:width="6dp"/> </shape> </item> </layer-list> 

我认为这是更好的解决scheme:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:gravity="bottom"> <shape> <size android:height="1dp" /> <solid android:color="#000000" /> </shape> </item> </layer-list> 

通常对于类似的任务 – 我创build了像这样的可绘制的层列表:

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/underlineColor"/> </shape> </item> <item android:bottom="3dp"> <shape android:shape="rectangle"> <solid android:color="@color/buttonColor"/> </shape> </item> 

这个想法是,首先你用underlineColor绘制矩形,然后在这个矩形的顶部用实际的buttonColor绘制另一个矩形,但应用bottomPadding。 它总是工作。

但是当我需要让buttonColor透明时,我不能使用上面的drawable。 我发现了另一个解决scheme

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/transparent"/> </shape> </item> <item android:drawable="@drawable/white_box" android:gravity="bottom" android:height="2dp"/> </layer-list> 

(你可以在这里看到mainButtonColor是透明的,而white_box只是一个简单的矩形,用白色的Solid来绘制)

有了这个解决scheme,你需要不同的线路。 我的要求只是强调。 即使你可以给布局不同的颜色。 你可以看到下面的图片,白线 在这里输入图像说明

 <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="-5dp" android:left="-5dp" android:right="-5dp"> <shape> <solid android:color="@android:color/transparent"/> <stroke android:color="@color/white" android:width="5dp"/> </shape> </item> <item android:top="-5dp" android:bottom="-5dp" android:right="-5dp"> <shape> <solid android:color="@android:color/transparent"/> <stroke android:color="@color/colorPrimaryDark" android:width="5dp"/> </shape> </item> <item android:bottom="-5dp" android:left="-5dp" android:right="-5dp"> <shape> <solid android:color="@android:color/transparent"/> <stroke android:color="@color/colorPrimaryDark" android:width="5dp"/> </shape> </item> <item android:top="-5dp" android:left="-5dp" android:bottom="-5dp"> <shape> <solid android:color="@android:color/transparent"/> <stroke android:color="@color/colorPrimaryDark" android:width="5dp"/> </shape> </item> <item android:bottom="2dp" android:left="5dp" android:right="5dp" android:top="5dp"> <shape> <solid android:color="@color/colorPrimary"/> <corners android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp" android:topLeftRadius="0dp" android:topRightRadius="0dp" /> </shape> </item>