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" />

  

    

另请参阅:

原文地址:https://www.cnblogs.com/developer-wang/p/12619528.html

时间: 2024-10-04 02:09:56

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

Android复习(二)应用资源 --&gt; 动画

没什么好总结的 复制自 https://developer.android.google.cn/guide/topics/resources/animation-resource 有需要的可以查看官方文档 动画资源 一个动画资源可以定义以下两种动画类型之一: 属性动画 通过使用 Animator 在设定的时间段内修改对象的属性值来创建动画. 视图动画 使用视图动画框架可以创建两种类型的动画: 补间动画:通过使用 Animation 对单张图片执行一系列转换来创建动画 帧动画:通过使用 Anima

Android复习(二)应用资源——&gt;更多类型

更多资源类型 本页面定义了更多类型的可具体化的资源,包括: Bool 带有布尔值的 XML 资源. 颜色 带有颜色值(十六进制颜色)的 XML 资源. 尺寸 带有尺寸值(包含度量单位)的 XML 资源. ID 提供应用资源和组件的唯一标识符的 XML 资源. 整数 带有整数值的 XML 资源. 整数数组 提供整数数组的 XML 资源. 类型化数组 提供 TypedArray(可用于可绘制对象数组)的 XML 资源. Bool 在 XML 中定义的布尔值. 注意:Bool 是使用 name 属性中

Andriod界面设计适配和Android Studio中的资源

Android的碎片化已经被喷了好多年,随着国内手机厂商的崛起,碎片化也越来越严重,根据OpenSignal的最新调查,2014年市面上有18796种不同的Android设备,作为开发者,一个无法回避的难题就是需要适配各种各样奇奇怪怪的机型. 设备机型不同必然也会导致屏幕大小和分辨率(Resolution)的不同,但是无论分辨率有多大,屏幕有多大,我们手指触控范围的大小不会发生变化,所以最优的适配方式应该是指定大小的控件在所有的设备上的显示都一样. Android的官方文档对此也有明确的说明 W

Android学习笔记二十四之ListView列表视图二

Android学习笔记二十四之ListView列表视图二 前面一篇我们介绍了常用的几种适配器的简单实现和ListView的简单使用,这一篇中,我们介绍一下ListView的优化和一些其它的问题. ListView优化方法一 在ListView中,我们最常用的就是自定义Adapter,在我们自定义Adapter中,需要实现两个比较重要的方法getCount()和getView(),前者是负责计算ListView的总Item数,后者是生成Item,有多少个Item就会调用getView()方法多少次

Android学习笔记二十七之ExpandableListView可折叠列表和StackView栈视图

Android学习笔记二十七之ExpandableListView可折叠列表和StackView栈视图 ExpandableListView可折叠列表 这一节我们介绍第三个用适配器的控件,ExpandableListView可折叠列表.这个控件可以实现我们在QQ中非常常见好友分组功能,ExpandableListView是ListView的子类,用法跟ListView差不多,下面我们来学习这个控件的基本使用: 常用属性: android:childDivider:指定各组内子类表项之间的分隔条,

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

Android UI---界面开发推荐颜色   在Android开发过程中,总要给app添加一些背景,个人认为使用纯色调便可以达到优雅的视觉效果. 补充一些常用的颜色值:colors.xml <?xml version="1.0" encoding="utf-8" ?> <resources> <color name="white">#ffffff</color><!--白色 --> &

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

原文网址:http://www.cnblogs.com/myphoebe/archive/2012/01/06/2314728.html android中设置TextView的颜色有方法setTextColor,这个方法被重载了,可以传入两种参数. public void setTextColor(int color) { mTextColor = ColorStateList.valueOf(color); updateTextColors(); } public void setTextCo

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

权限配置写在Mainifest.xml文件中: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.mxmtxtreader" android:versionCode="1" andro

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

http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息:  http://developer.android.com/sdk/installing/installing-adt.html 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ssl.google.com/android/eclipse/https://dl-ssl.