概述:ColorStateList对象定义在xml中, 它可以真正根据视图组件的状态,来改变视图组件的颜色。
文件位置:res/color/filename.xml。
指向的对象:ColorStateList类。
引用方式:1. 在java中, R.color.filename。 2. 在xml中, @[package:]color/filename
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:color="hex_color" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_window_focused=["true" | "false"] /> </selector><selector> 根节点, 包含一个或多个<item>节点。
1. xmlns:android xml命名空间, ”http://schemas.android.com/apk/res/android“。
<item>
1. android:color 十六进制颜色值。 #RGB, #ARGB, #RRGGBB, #AARRGGBB。
2. android:state_pressed boolean类型, 当对象被按下时,使用这个状态的颜色值。
3. android:state_focused boolean类型, 当对象获得焦点时。
4. android:state_selected boolean类型, 当对象被选择的时候。
5. android:state_checkable boolean类型, 当对象状态变成可选择的时候。
6. android:state_checked boolean 类型, 当对象状态变成checked。
7. android:state_enabled boolean类型, 当对象的状态变成enabled。
8. android:state_window_focused boolean类型, 当应用窗口获得焦点。
实例:
布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/clickMe" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/color_button" android:text="ClickMe" /> </LinearLayout>
颜色列表资源文件:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="#ffff0000" android:state_pressed="true" /> <item android:color="#ff000000" /> </selector>
不同的状态, 可以为组件设置不同的颜色。