简书链接:最佳绘制一条边selectorlayoutlist以及个spinner设置背景图片,设置边距。
文章字数:326,阅读全文大约需要1分钟
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
> <item android:state_enabled="true">
<!-- 控制内容右边距离防止和内容如何在一起--> <layer-list android:paddingRight="34dp"> <item android:height="1dp" android:gravity="bottom"> <shape> <solid android:color="@color/spinner_color_selector" /> </shape> </item>
<item android:left="10dp" android:right="10dp"> <bitmap android:gravity="right" android:src="@drawable/spinner_down" /> </item> </layer-list>
</item> <item android:state_enabled="false">
<layer-list android:paddingRight="34dp"> <item android:height="1dp" android:gravity="bottom"> <shape> <solid android:color="@color/spinner_color_selector" /> </shape> </item>
<item android:left="10dp" android:right="10dp"> <bitmap android:gravity="right" android:src="@drawable/spinner_down_disable" /> </item> </layer-list>
</item>
</selector>
|
该方法不会绘制无关的背景颜色,网上的方法会强制设置2种背景颜色,而且导致重复绘制。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true">
<layer-list android:paddingRight="34dp"> <!-- 控制内容右边距离防止和内容如何在一起--> <item android:width="150dp"> <shape> <!-- <solid android:color="@color/themeColorSecond"/>--> <corners android:radius="3dp" /> <stroke android:width="1dp" android:color="@color/spinner_color_selector" /> </shape> </item>
<item android:left="10dp" android:right="10dp"> <bitmap android:gravity="right" android:src="@drawable/spinner_down" /> </item> </layer-list> </item> <item android:state_enabled="false">
<layer-list android:paddingRight="34dp"> <!-- 控制内容右边距离防止和内容如何在一起--> <item> <shape> <!-- <solid android:color="@color/themeColorSecond"/>--> <corners android:radius="3dp" /> <stroke android:width="1dp" android:color="@color/shallowGray" /> </shape> </item>
<item android:left="10dp" android:right="10dp"> <bitmap android:gravity="right" android:src="@drawable/spinner_down_disable" /> </item> </layer-list> </item>
</selector>
|

绘制右下描边

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="false"> <layer-list > <item android:height="1px" android:gravity="bottom" > <shape> <solid android:color="@color/shallowGray" /> </shape> </item> <item android:gravity="right" android:width="1px" > <shape> <size android:width="1px"/> <solid android:color="@color/shallowGray"/> </shape> </item> <!-- 下面的item只是为了预览--> <item android:bottom="1px" android:right="1px"> <shape > <size android:width="5dp" android:height="5dp"/> <solid android:color="@color/transparent"/> </shape> </item>
</layer-list> </item>
<item android:state_pressed="true"> <ripple android:color="#55000000" tools:targetApi="lollipop"> <item android:drawable="@drawable/white"></item>
</ripple> </item>
</selector>
|
最后一个有兼容性问题,android22测试整个背景变成了描边色。