Android應用資源—狀態顏色列表(Color State List)

來源:互聯網
上載者:User

ColorStateList是能夠把申請的顏色定義在XML中的一個對象,但是它實際上會根據使用這個ColorStateList對象的View對象的狀態,來改變顏色。例如,Button控制項存在幾種不同的狀態之一(按下、聚焦、或者都不是),並且它要使用一個顏色狀態列表,在每個狀態期間,可以提供不同的顏色。

可以在一個XML檔案中描述這個狀態列表。每個顏色被定義在一個<selector>元素內部的<item>元素中。每個<item>元素使用各種屬性來描述它應該用於那個狀態中。

每個狀態改變期間,會從上到下遍曆狀態列表,第一個被找到的與目前狀態匹配的顏色會被使用,這個選擇不是基於首選,而是簡單選擇遇到的第一個滿足條件的項目。

注意:如果要提供靜態顏色資源,請使用簡單的Color值。

檔案位置(FILE LOCATION):

Res/color/filename.xml,檔案名稱被做資源的ID。

被編譯的資源資料類型(COMPLILED RESOURCE DATATYPE):

資源指向一個ColorStateList對象。

資源引用(RESOURCE REFERENCE):

在Java代碼中:R.color.filename

在XML中:@[package:]color/filename

文法(SYNTAX):

<?xml version="1.0" encoding="utf-8"?>
<selectorxmlns: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>

 

元素(ELEMENTS):

<selector>

必須的,它必須是根項目。包含一個或多個<item>元素。

屬性(ATTRIBUTES):

xmlns:android:

字串,必須的。它定義了XML的命名空間,必須是“http://schemas.android.com/apk/res/android”。

<item>

定義某個狀態期間使用的顏色,顏色會做為這個元素的一個屬性。它必須是<selector>元素的子項目。

屬性(ATTRIBUTES):

android:color

   
十六進位顏色,必須的。顏色是用RGB值來指定的,並且可選擇alpha通道。

   
這個值始終是用#字元開頭,後面跟的是Appha-Red-Green-Blue資訊,格式如下:

        #RGB

        #ARGB

        #RRGGBB

        #AARRGGBB

android:state_pressed

一個布爾值,如果這個項目是在對象被按下時使用,那麼就要設定為true。(如,按鈕被觸摸或點擊時。)false應該用於預設的非按下狀態。

android:state_focused

一個布爾值,如果這個項目是在對象擷取焦點時使用,那麼就要設定為true。如,一個選項標籤被開啟時。如果這個項目要用於對象沒有被被選擇的時候,那麼就要設定為false。

android:state_checkable

一個布爾值,如果這個項目要用於對象的可選擇狀態,那麼就要設定為true。如果這個項目要用於不可選狀態,那麼就要設定為false。(它只用於一個對象在可選和不可選之間的轉換)。

android:state_checked

一個布爾值,如果這個項目要用於對象被勾選的時候,那麼就要設定為true。否者設為false。

android:state_enabled

一個布爾值,如果這個項目要用於對象可用狀態(接受觸摸或點擊事件的能力),那麼就要設定為true,否者設定為false。

android:state_window_focused

一個布爾值,如果這個項目要用於應用程式視窗的有焦點狀態(應用程式是在前台),那麼就要設定為true,否者設定false。

 

注意:要記住,狀態列表中一個與對象目前狀態匹配的項目會被使用。因此,如果列表中的第一項沒有包含以上任何一種狀態屬性,那麼每次都會使用這個項目,因此預設設定應該始終被放到最後。

例子(EXAMPLE):

XML檔案被儲存在res/color/button_text.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"/>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.