顏色狀態清單資源
透過集合功能整理內容
你可以依據偏好儲存及分類內容。
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:lStar="floating_point_value"
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:lStar
- 「浮點」。選擇性。此屬性會修改基本顏色的感知亮度,並採用介於 0 到 100 的浮點值,或會如此解析的主題屬性。此項目的整體顏色計算方式,是透過將基本顏色轉換成無障礙顏色空間,並將其 L* 設定為
lStar
屬性指定的值。範例:android:lStar="50"
android:state_pressed
- 「布林值」。如果此項目應於按下物件時使用,則為「true」(例如輕觸或點按按鈕時);如果此項目應根據預設的非按下狀態使用,則為「false」。
android:state_focused
- 「布林值」。如果此項目應於物件聚焦時使用 (例如使用軌跡球/D-Pad醒目顯示按鈕),則為「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」。
注意:提醒您,系統會套用狀態清單中第一個與物件目前狀態相符的項目。因此,如果清單中的第一個項目不含任何上述狀態屬性,那麼每次都會套用此規則,因此預設值應總是為最後,如以下範例所示。
- 例如:
- 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 會套用顏色清單至檢視畫面:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- 另請參閱:
-
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2022-09-02 (世界標準時間)。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"缺少我需要的資訊"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"過於複雜/步驟過多"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"過時"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻譯問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"示例/程式碼問題"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"其他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"容易理解"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"確實解決了我的問題"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"其他"
}]