StateListDrawable对应< selector>
< selector> 表示Drawable集合,每个Drawable对应View的一种状态,这样系统就会根据View的状态来选择合适的Drawable。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true"
android:dither="true"
android:variablePadding="true">
<item
android:drawable="@drawable/ic_launcher"
android:state_activated="true"
android:state_checkable="true"
android:state_checked="true"
android:state_enabled="true"
android:state_focused="true"
android:state_hovered="true"
android:state_pressed="true"
android:state_selected="true"
android:state_window_focused="true" />
</selector>
< selector>标签使用语法
android:constantSize=”true” StateListDrawable 的固有大小是否不随其状态改变而改变的,因为状态的改变导致StateListDrawable切换到具体的Drawable,而不同的Drawable具有不同的大小。默认选项为false。
true 表示StateListDrawable的固有大小保持不变,这时它的固有大小是内部所有Drawable的固有大小的最大值
false 表示StateListDrawable的固有大小会随着Drawable的改变而改变。
android:dither=”true” 是否开启抖动效果,这个在BitmapDrawable中也有使用,开启此选项可以在低质量的屏幕上任然获得较好的显示效果,默认选项为true。
android:variablePadding=”true” 表示padding是否随着状态改变而改变。默认false,不建议开启。
true 表示padding随着状态的改变而改变
false 表示StateListDrawable的padding是内部所有Drawable的padding的最大值。
< Item>标签使用语法
- android:state_pressed 表示按下状态,比如Button按下没有松开的状态。
- android:state_focused 表示View是否获取焦点
- android:state_selected 表示用户是否选择了View
- android:state_checked 表示用户是否选中了View,一般用于CheckBox这类选中和非选中状态之间切换的View。
- android:state_enabled 表示View当前处于可用状态
注意: 系统会根据View的当前状态从 selector 中选择对应的item,每个item对应一个具体的Drawable,系统按照从上到下的顺序查找,直到查找到第一条匹配的item。默认的item应该放在最后,应为默认的item不附带任何状态。