颜色状态列表资源
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
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>
- 元素:
-
<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"
。仅适用于对象可在可勾选和不可勾选的 widget 之间转换的情况。
android:state_checked
- 布尔值。如果是在对象被勾选时使用此项,则为
"true"
;如果是在对象被取消选择时使用此项,则为 "false"
。
android:state_enabled
- 布尔值。如果是在启用对象(即能够接收轻触或点击事件)时使用此项,则为
"true"
;如果是在停用对象时使用此项,则为 "false"
。
android:state_window_focused
- 布尔值。如果是在应用窗口具有焦点(即应用位于前台)时使用此项,则为
"true"
;如果是在应用窗口没有焦点(例如通知栏下拉或出现一个对话框)时使用此项,则为 "false"
。
注意:系统会应用状态列表中第一个与对象当前状态匹配的项。因此,如果列表中的第一项不包含上述任何状态属性,则每次都会应用该项。因此,请将默认值放在最后,如以下示例所示。
- 示例:
- 保存在
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" />
- 另请参阅:
-
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-09-20。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"没有我需要的信息"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"太复杂/步骤太多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"内容需要更新"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻译问题"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/代码问题"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"易于理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"解决了我的问题"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]
{"lastModified": "\u6700\u540e\u66f4\u65b0\u65f6\u95f4 (UTC)\uff1a2024-09-20\u3002"}
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2024-09-20。"]]