ColorStateList
是一个可以在 XML 中定义并应用为颜色的对象,它实际上是根据所应用到的 View
对象的状态来改变颜色。例如,Button
widget 可以处于几种状态(即按下、聚焦或既不按下也不聚焦)中的一种。您可以使用颜色状态列表,为每种状态提供不同的颜色。
您可以在 XML 文件中描述状态列表。每种颜色都在单个 <selector>
元素内的 <item>
元素中定义。每个 <item>
使用不同的属性来描述其是在什么状态下使用。
在每次状态更改期间,系统将从上到下遍历状态列表,并且将使用与当前状态匹配的第一项。系统的选择并非基于“最佳”匹配,而是基于符合状态的最低标准的第一项。
注意:如果要提供静态颜色资源,请使用简单的颜色值。
- 文件位置:
res/color/filename.xml
文件名用作资源 ID。- 编译后的资源数据类型:
- 指向
ColorStateList
的资源指针 - 资源引用:
-
在 Java 中:
R.color.filename
在 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:lStar="floating_point_value" 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>
- 元素:
- 示例:
- 保存在
res/color/button_text.xml
的 XML 文件:<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused --> <item android:color="#ff000000"/> <!-- default --> </selector>
以下布局 XML 会将颜色列表应用于
View
:<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/button_text" android:textColor="@color/button_text" />
- 另请参阅: