介绍
StateListDrawable 资源是定义在 XML 文件中的 Drawable 对象,能根据状态来呈现不同的图像。例如,一个 Button 组件存在多种不同的状态(pressed、enabled 或 focused 等),使用 StateListDrawable资源可以为按钮的每个状态提供不同的按钮图片。StateListDrawable资源在实际开发中用处很多,例如,今日头条中选择登录方式的按钮,效果如图 13.10 所示。
常用XML属性
状态属性 | 描述 |
android:state_active | 表示是否处于激活状态,属性值为 true 或 false |
android:state_checked | 表示是否处于选中状态,属性值为 true 或 false |
android:state_enabled | 表示是否处于可用状态,属性值为 true 或 false |
android:state_first | 表示是否处于开始状态,属性值为 true 或 false |
android:state_focused | 表示是否处于获得焦点状态,属性值为 true 或 false |
android:state_last | 表示是否处于结束状态,属性值为 true 或 false |
android:state_middle | 表示是否处于中间状态,属性值为 true 或 false |
android:state_pressed | 表示是否处于被按下状态,属性值为 true 或 false |
android:state_selected | 表示是否处于被选择状态,属性值为 true 或 false |
android:state_window_focused | 表示窗口是否已经得到焦点状态,属性值为 true 或 false |
例子
在 res/rawable 目录中创建一个名称为 button_enable.xml 的 StateListDrawable 资源文件,在该文件中,指定 android:state_enabled 属性为 true 时使用的背景图片(green.png)和 android:state_enabled属性为 false 时使用的背景图片(green_mint.png)。button_enable.xml 文件的具体代码如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/green" android:state_enabled="true"/>
<item android:drawable="@drawable/green_mint" android:state_enabled="false"/>
</selector>