zoukankan      html  css  js  c++  java
  • 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" />
    

      


       
     
    另请参阅:
  • 相关阅读:
    ACM——完数
    基于图片的信息隐藏与显示
    ACM——数的计数
    ACM——A + B Problem (2)
    ACM——简单排序
    ACM——回文
    ACM——圆柱体的表面积
    ACM——进制转换
    ACM——线性表操作
    this的理解
  • 原文地址:https://www.cnblogs.com/developer-wang/p/12619528.html
Copyright © 2011-2022 走看看