android selector是android的资源选择器,如按钮的多种状态对应多种显示模式,选择框的选择与未选择状态等等。
在res/drawable.../下使用xml来定义显示,有两种写法,
1.android:drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_xxx1="xxx"
android:state_xxx2="xxx"
android:drawable="@drawable/btn_check_on_dis"/>
<item ...... />
</selector>
2.shape
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_xxx1="xxx"
android:state_xxx2="xxx">
<shape ...... />
</item>
<item ...... />
</selector>
Selector支持的属性如下,很多都不知道啥意思,慢慢学习吧。
android:state_checked=""
android:state_enabled=""android:state_focused=""
android:state_pressed=""
android:state_selected=""
android:state_active=""
android:state_activated=""
android:state_checkable=""
android:state_single="true"
android:state_window_focused=""
android:state_accelerated=""
android:state_hoverred=""
android:state_drag_can_accept=""
android:state_hovered=""
android:state_accessibility_focused=""
android:state_first=""
android:state_middle=""
android:state_last=""
如下是一些常见用法
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/selector_check"
android:checked="true"
android:text="Checked" />
selector_check.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_check_on_dis" android:state_checked="true" android:state_enabled="false"/>
<item android:drawable="@drawable/btn_check_on" android:state_checked="true"/>
<item android:drawable="@drawable/btn_check_off_dis" android:state_enabled="false"/>
<item android:drawable="@drawable/btn_check_off"/>
</selector>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/content_margin"
android:background="@drawable/selector_press"
android:padding="8dp"
android:text="Pressed" />
selector_press.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 禁用时的图片背景 -->
<item android:state_enabled="false">
<shape>
<solid android:color="@color/btn_green_disable" />
<corners android:radius="2dp" />
</shape>
</item>
<!-- 点击时的图片背景 -->
<item android:state_pressed="true">
<shape>
<solid android:color="@color/btn_green_selected" />
<corners android:radius="2dp" />
</shape>
</item>
<!-- 默认时的背景图片 -->
<item>
<shape>
<solid android:color="@color/btn_green_normal" />
<corners android:radius="2dp" />
</shape>
</item>
</selector>
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/content_margin"
android:layout_weight="1"
android:background="@drawable/selector_focus"
android:padding="8dp"
android:text="Normal" />
selector_focus.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 获取焦点状态 -->
<item android:state_focused="true">
<shape>
<stroke android:width="2dp" android:color="@color/btn_green_normal" />
<corners android:radius="2dp" />
</shape>
</item>
<!-- 不可用状态 -->
<item android:state_enabled="false">
<shape>
<stroke android:width="1sp" android:color="#DDDDDD" />
<corners android:radius="2dp" />
</shape>
</item>
<!-- 普通状态 -->
<item>
<shape>
<stroke android:width="1sp" android:color="@color/btn_green_normal" />
<corners android:radius="2dp" />
</shape>
</item>
</selector>
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="70dp"
android:cacheColorHint="@android:color/transparent"
android:listSelector="@drawable/selector_select"
android:numColumns="3" />
selector_select.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape>
<solid android:color="#ff0000" />
</shape>
</item>
<item android:state_pressed="true" android:state_selected="false">
<shape>
<solid android:color="@color/btn_green_selected" />
</shape>
</item>
</selector>

被折叠的 条评论
为什么被折叠?



