一个 ColorStateList
是一个可以在 XML 中定义并应用为颜色的对象,该颜色实际上会根据应用于 View
对象的状态而改变颜色。例如,一个 Button
小部件可以存在于几种状态之一:按下、聚焦或两者都不存在。使用颜色状态列表,您可以为每种状态提供不同的颜色。
您可以在 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" />
- 另请参阅