之前在写selector时总是先写好几个不同状态的xml,再引用
今天发现一个更简便的写法
匹配规则
系统在匹配selector中的<item>
时,会从上往下匹配,当某一项匹配时,便不再继续往下匹配。同时如果某个item的状态没有指定,那么它能匹配任何状态。
注意点
由于这样的匹配规则,下面的<item>
要注意是否能够匹配到,防止始终被上面的<item>
先匹配而无法生效
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape> <stroke android:width="1.0px" android:color="@color/white" /> <solid android:color="@color/colorPrimaryDark" /> <corners android:radius="5dp" /> </shape> </item> <item android:state_enabled="true"> <shape> <stroke android:width="1.0px" android:color="@color/white" /> <solid android:color="@color/colorPrimary" /> <corners android:radius="5dp" /> </shape> </item> <item android:state_enabled="false"> <shape> <stroke android:width="1.0px" android:color="@color/white" /> <solid android:color="@color/gray_light" /> <corners android:radius="5dp" /> </shape> </item> </selector>