转自: https://developer.android.google.cn/guide/topics/resources/color-list-resource

颜色状态列表资源

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: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: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”。

注意:请注意,系统将应用状态列表中与对象的当前状态匹配的第一项。因此,如果列表中的第一项不包含上述任何状态属性,则每次都会应用该项,因此默认值应始终为最后一项,如以下示例所示。

示例:
保存于 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" />

  


   
 
另请参阅:

Android复习(二)应用资源 --> 颜色状态列表的更多相关文章

  1. android android:textColor="@[package:]color/filename" ----Color/filename文字颜色selector状态列表

    文字颜色selector状态列表

  2. Android开发---如何操作资源目录中的资源文件3--圆角边框、背景颜色渐变效果、边框颜色

    Android开发---如何操作资源目录中的资源文件3 效果图 1.圆角边框 2.背景颜色渐变效果 1.activity_main.xml 描述: 定义了一个shape资源管理按钮 <?xml ...

  3. Android进阶(二十四)Android UI---界面开发推荐颜色

    Android UI---界面开发推荐颜色   在Android开发过程中,总要给app添加一些背景,个人认为使用纯色调便可以达到优雅的视觉效果. 补充一些常用的颜色值:colors.xml < ...

  4. Android Material Design-Creating Lists and Cards(创建列表和卡)-(三)

    转载请注明出处:http://blog.csdn.net/bbld_/article/details/40430319 翻译自:http://developer.android.com/trainin ...

  5. [转] Android SDK manager 无法获取更新版本列表

      打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...

  6. 【转】Android中设置TextView的颜色setTextColor--代码中设置字体颜色

    原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...

  7. 【转】Android中设置TextView的颜色setTextColor

    原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...

  8. Android进阶(二十)AndroidAPP开发问题汇总(四)

    · Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...

  9. android SDK manager 无法获取更新版本列表【转载】

    http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息:  http://developer.android.c ...

  10. Android应用的权限配置和权限列表

    权限配置写在Mainifest.xml文件中: <?xml version="1.0" encoding="utf-8"?> <manifes ...

随机推荐

  1. 如何使用强化学习算法解决15-puzzle问题,即所谓的“十五谜题”推盘游戏

    相关: https://medium.com/@amshali/15-puzzle-with-reinforcement-learning-8bcfc1aa54e7 什么是15-puzzle问题? 数 ...

  2. 【转载】 图解协程调度模型-GMP模型

    原文地址: https://www.cnblogs.com/codexiaoyi/p/14975236.html =========================================== ...

  3. 2022 CCF推荐会议列表(国际会议列表)

    2019年版本的CCF推荐会议和期刊: https://www.ccf.org.cn/Academic_Evaluation/By_category/2022-12-02/780280.shtml 2 ...

  4. JVM的本地方法栈-通俗理解

    1.本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的, 2.其区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的N ...

  5. Potplayer+Alist+网盘,实现网盘视频免费在线看4K杜比HDR

    Potplayer+Alist+网盘,实现网盘视频免费在线看4K杜比HDR 引言 最近刷视频看到了一个方法可以通过alist挂载网盘,配合potplayer可实现超高画质免费在线观看视频,这里发一下配 ...

  6. 七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)

    教程简介 EasySQLite是一个七天.NET 8操作SQLite入门到实战详细教程(包含选型.开发.发布.部署)! 什么是SQLite? SQLite 是一个软件库,实现了自给自足的.无服务器的. ...

  7. sqlserver 索引优化 CPU占用过高 执行分析 服务器检查[转]

    SELECT TOP 10 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans) ...

  8. Linux信号量(2)-POSIX 信号量

    ​上一章,讲述了SYSTEM V信号量,主要运行于进程之间,本章主要介绍POSIX信号量:有名信号量.无名信号量. POSIX信号量 POSIX信号量进程是3种 IPC(Inter-Process C ...

  9. linux小常识

    一.一般来说著名的linux系统基本上分两大类:1 RedHat系列:Redhat.Centos.Fedora等2 Debian系列:Debian.Ubuntu等RedHat 系列:1 常见的安装包格 ...

  10. C# Winform 使用 BarTender打印条码

    目录 - 1. 使用软件BarTender 设计打印模板 - 2. Winfrom集成打印 - 3.最终效果 - 1. 使用软件BarTender 设计打印模板 贴一个入门级使用教程:https:// ...