先看代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize=["true" | "false"]
android:dither=["true" | "false"]
android:variablePadding=["true" | "false"] >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:state_pressed=["true" | "false"]
android:state_focused=["true" | "false"]
android:state_hovered=["true" | "false"]
android:state_selected=["true" | "false"]
android:state_checkable=["true" | "false"]
android:state_checked=["true" | "false"]
android:state_enabled=["true" | "false"]
android:state_activated=["true" | "false"]
android:state_window_focused=["true" | "false"] />
</selector>
android:state_pressed
// “true” 如果当物体按下此项目应使用(当被触摸一个按钮,如/点击); “false”,如果这个项目应该在默认使用,无压状态。
android:state_focused
// “true” 如果当物体具有输入焦点(当用户选择文本输入如)此产品的应用; “false”,如果这个项目应该在默认使用,非聚焦状态。
android:state_hovered
// “true” 如果当物体被徘徊由光标此产品的应用; “false”,如果这个项目应该在默认使用,非悬停状态。通常,这可拉伸可以是用于“聚焦”状态的相同可拉伸。在API级别14引入。
android:state_selected
// “true”,如果当物体是用一个方向控制导航时(通过与D-垫列表导航时如)当前用户选择此产品的应使用; “false”,如果当对象不选择此项目应该被使用。
// 所选择的状态时使用对焦(android:state_focused)是不够的(例如,当列表视图具有焦点,并在其中一个项目被选中了D-PAD)。
android:state_checkable
//”true”时,如果对象是可检查的这个项目应该使用; “false”时,如果对象不是可检查的这个项目应该被使用。(只有有用的,如果该对象可以一个可检查的和非可检查的小部件之间转换。)
android:state_checked
// “true”,如果该对象被选中时,这个项目应该使用; “false”,如果它当对象是应使用未检查。
android:state_enabled
// “true”,如果当对象启用此功能,应使用(能接收触摸/点击事件); “false”,如果当物体被禁用它应该被使用。
android:state_activated
// “true” 是否应该使用这个项目时,该对象的持久选择激活(如“亮点”以前选择列表中的一个持久的导航视图项目); “false”,如果它时,应使用的对象不被激活。
Introduced in API level 11.
android:state_window_focused
// “true”,如果这个项目时,应使用应用程序窗口具有焦点(应用程序在前台),”false”,如果这个项目时,应使用应用程序窗口不具有焦点(例如,如果通知栏拉下来,或者出现一个对话框)。
XML file saved at res/drawable/button.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_focused" /> <!-- focused -->
<item android:state_hovered="true"
android:drawable="@drawable/button_focused" /> <!-- hovered -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
This layout XML applies the state list drawable to a Button:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/button" />
原文:http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList