Android复习(二)应用资源 --> 颜色状态列表
转自: 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复习(二)应用资源 --> 颜色状态列表的更多相关文章
- android android:textColor="@[package:]color/filename" ----Color/filename文字颜色selector状态列表
文字颜色selector状态列表
- Android开发---如何操作资源目录中的资源文件3--圆角边框、背景颜色渐变效果、边框颜色
Android开发---如何操作资源目录中的资源文件3 效果图 1.圆角边框 2.背景颜色渐变效果 1.activity_main.xml 描述: 定义了一个shape资源管理按钮 <?xml ...
- Android进阶(二十四)Android UI---界面开发推荐颜色
Android UI---界面开发推荐颜色 在Android开发过程中,总要给app添加一些背景,个人认为使用纯色调便可以达到优雅的视觉效果. 补充一些常用的颜色值:colors.xml < ...
- Android Material Design-Creating Lists and Cards(创建列表和卡)-(三)
转载请注明出处:http://blog.csdn.net/bbld_/article/details/40430319 翻译自:http://developer.android.com/trainin ...
- [转] Android SDK manager 无法获取更新版本列表
打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...
- 【转】Android中设置TextView的颜色setTextColor--代码中设置字体颜色
原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...
- 【转】Android中设置TextView的颜色setTextColor
原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setText ...
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
- android SDK manager 无法获取更新版本列表【转载】
http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息: http://developer.android.c ...
- Android应用的权限配置和权限列表
权限配置写在Mainifest.xml文件中: <?xml version="1.0" encoding="utf-8"?> <manifes ...
随机推荐
- nvidia显卡的售后真的是不敢要人恭维——拆机箱时误拧显卡自身挡板螺丝被拒保
事情比较简单,单位在nvidia的经销商那里购买的nvidia titan rtx显卡,保修期内坏掉,拆下来的过程中误拧了挡板的螺丝,结果被拒保,这里就是单纯的记录这件事情. 这件事确实我这方面有不对 ...
- nginx实战教程
大纲 为了让大家更快的学会,该博客中的内容录制成了视频课程:马上在线学习 1.什么是nginx Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 由 ...
- 讲师招募 | Apache DolphinScheduler Meetup诚邀您共建开源!
随着Apache DolphinScheduler在全球范围内的快速发展,我们的用户群体和社区活动也在不断扩大. 为了进一步丰富我们的社区内容,分享更多有价值的知识和经验,我们诚挚地邀请您加入我们,成 ...
- JAVA——水仙花数问题
2024/07/12 1.问题 2.错误解法 3.错误分析 4.正确解法 5.其他:关于Java中幂函数的用法 6.参考 1.问题 2.错误解法 import java.util.Scanner; p ...
- C# 使用HtmlAgilityPack 抓取 网站链接
今天在找电视剧下载链接的时候,找了一个整部剧的下载地址,但是有40多集,链接地址较长且不好复制,于是就想到了HtmlAgilityPack抓取的方式. 先看实现效果: 使用到的NUGET包: Html ...
- 通过 GitHub Actions 实现代码的自动编译和发布
GitHub Actions 是一个非常强大的工具,可以用来实现各种自动化任务,包括自动编译和发布 release.以下是一个基本的工作流程,展示如何使用 GitHub Actions 实现这一目标: ...
- Ubuntu 配置默认编辑器
在 Ubuntu 系统中,可以通过多种方式配置默认的文本编辑器,以便在使用命令行工具(如 crontab 或 visudo)时自动使用你喜欢的编辑器.以下是几种常见的方法: 使用 update-alt ...
- 【YashanDB知识库】virt虚拟内存远大于res内存问题分析
YASDB内存占用简介 参数配置: 默认参数配置:DBMS_PARAM高级包生成配置参数 数据库内存配置,使用默认参数步骤: 1.DBMS_PARAM.OPTIMIZE(); //生成默认参数,使用总 ...
- OpenAI注册-临时手机号/邮箱
OpenAI 在注册ChatGPT时,发生了一个错误,使用邮箱进行注册后,在注册界面会提示"Not available OpenAI's services are not available ...
- vue 消息订阅与发布
vue 消息订阅与发布 一.场景 vue中非父子组件之间通信时,使用vuex有时间会很麻烦,这时候可以通过bus总线来实现 消息的订阅与发布 二.实现方法 1.main.js //main.js Vu ...