颜色状态列表资源
使用收藏夹整理内容 根据您的偏好保存和分类内容。
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>
- 元素
-
<selector>
- 必需。这是根元素。包含一个或多个
<item>
元素。属性
xmlns:android
- 字符串。必需。定义 XML 命名空间,即
"http://schemas.android.com/apk/res/android"
。
<item>
- 定义在某些状态下使用的颜色,由其属性描述。它是
<selector>
元素的子项。属性
android:color
- 十六进制颜色。必需。颜色由 RGB 值和可选 Alpha 通道指定。
该值始终以井号 (#
) 字符开头,后跟以下格式之一的 Alpha-Red-Green-Blue 信息
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
android:lStar
- 浮点数。可选。此属性会修改基色的感知亮度。它接受 0 到 100 之间的浮点值,或解析为该值的某个主题属性。项的整体颜色是通过将基色转换为无障碍颜色空间,并将其 L* 设置为
lStar
属性上指定的值来计算的。示例:android:lStar="50"
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"
。
注意:状态列表中与对象当前状态匹配的第一个项将被应用。因此,如果列表中的第一个项不包含任何上述状态属性,那么它将每次都适用。因此,请将您的默认值放在最后,如以下示例所示。
- 示例
- XML 文件保存在
res/color/button_text.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" />
- 另请参阅
-
本页内容和代码示例受内容许可中所述的许可约束。Java 和 OpenJDK 是 Oracle 和/或其关联公司的商标或注册商标。
上次更新时间:2025-02-10 UTC。
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-10 UTC."],[],[]]