色状態リストのリソース
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
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>
- 必須。これはルート要素です。1 つまたは複数の
<item>
要素を格納します。
属性:
xmlns:android
- 文字列。必須。XML 名前空間を定義します。
"http://schemas.android.com/apk/res/android"
にします。
<item>
- 特定の状態で使用する色を定義します。色と状態については、各属性で指定します。
<selector>
要素の子要素です。属性:
android:color
- 16 進数色コード。必須。色は、RGB 値とオプションのアルファ チャンネルで指定します。
値は常に番号記号(「#
」)で始め、その後に次のいずれかの形式で 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"
に設定します。
注: 状態リストのアイテムの中で、オブジェクトの現在の状態に合致する最初のアイテムが適用されます。したがって、リスト内の最初のアイテムに上記の状態属性がいずれも含まれていない場合、そのアイテムが毎回適用されることになります。このため、デフォルト値は最後に配置します。下記の例をご覧ください。
- 例:
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" />
- 関連項目:
-
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[null,null,["最終更新日 2025-07-27 UTC。"],[],[],null,["# Color state list resource\n\nA [ColorStateList](/reference/android/content/res/ColorStateList)\nis an object you can define in XML and apply as a color that actually changes colors depending on\nthe state of the [View](/reference/android/view/View) object it is\napplied to. For example, a [Button](/reference/android/widget/Button)\nwidget can exist in one of several states: pressed, focused, or neither. Using a color state list,\nyou can provide a different color for each state.\n\nYou describe the state list in an XML file. Each color is defined in an `\u003citem\u003e` element inside a single `\u003cselector\u003e` element. Each `\u003citem\u003e`\nuses various attributes to describe the state in which it is used.\n\nDuring each state change, the state list is traversed top to bottom, and the first item that\nmatches the current state is used. The selection is *isn't* based on the \"best\"\nmatch, but rather the first item that meets the minimum criteria of the state.\n\n**Note:** If you want to provide a static color resource, use a\nsimple [color](/guide/topics/resources/more-resources#Color) value.\n\nfile location:\n: `res/color/`*filename*`.xml` \n\n The filename is used as the resource ID.\n\ncompiled resource datatype:\n: Resource pointer to a [ColorStateList](/reference/android/content/res/ColorStateList)\n\nresource reference:\n:\n In Java: `R.color.`*filename* \n\n In XML: `@[`*package* `:]color/`*filename*\n\nsyntax:\n:\n\n ```xml\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cselector xmlns:android=\"http://schemas.android.com/apk/res/android\" \u003e\n \u003citem\n android:color=\"hex_color\"\n android:lStar=\"floating_point_value\"\n android:state_pressed=[\"true\" | \"false\"]\n android:state_focused=[\"true\" | \"false\"]\n android:state_selected=[\"true\" | \"false\"]\n android:state_checkable=[\"true\" | \"false\"]\n android:state_checked=[\"true\" | \"false\"]\n android:state_enabled=[\"true\" | \"false\"]\n android:state_window_focused=[\"true\" | \"false\"] /\u003e\n \u003c/selector\u003e\n ```\n\nelements:\n:\n\n `\u003cselector\u003e`\n : **Required.** This is the root element. Contains one or more `\u003citem\u003e` elements.\n\n Attributes:\n\n `xmlns:android`\n : *String* . **Required.** Defines the XML namespace, which is\n `\"http://schemas.android.com/apk/res/android\"`.\n\n `\u003citem\u003e`\n : Defines a color to use during certain states, as described by its attributes. It is a\n child of a `\u003cselector\u003e` element.\n\n Attributes:\n\n `android:color`\n : *Hexadeximal color* . **Required** . The color is specified with an\n RGB value and optional alpha channel.\n\n The value always begins with a pound (`#`) character, followed by the\n Alpha-Red-Green-Blue information in one of the following formats:\n\n - #*RGB*\n - #*ARGB*\n - #*RRGGBB*\n - #*AARRGGBB*\n\n `android:lStar`\n : *Floating point* . **Optional** . This attribute modifies the base color's perceptual luminance. It takes either a\n floating-point value between 0 and 100 or a theme attribute that resolves as such. The item's\n overall color is calculated by converting the base color to an accessibility friendly color space\n and setting its L\\* to the value specified on the `lStar` attribute.\n\n Example: `android:lStar=\"50\"`\n\n `android:state_pressed`\n : *Boolean* . `\"true\"` if this item is used when the object is tapped, such as when a button\n is touched or clicked. It's `\"false\"` if this item is used in the default, non-tapped state.\n\n `android:state_focused`\n : *Boolean* . `\"true\"` if this item is used when the object is focused, such as when a button\n is highlighted using the trackball or D-pad. It's `\"false\"` if this item is used in the default,\n non-focused state.\n\n `android:state_selected`\n : *Boolean* . `\"true\"` if this item is used when the object is selected, such as when a\n tab is opened. It's `\"false\"` if this item it used when the object isn't selected.\n\n `android:state_checkable`\n : *Boolean* . `\"true\"` if this item is used when the object is checkable. It's `\"false\"` if this\n item is used when the object isn't checkable. Only useful if the object can\n transition between a checkable and non-checkable widget.\n\n `android:state_checked`\n : *Boolean* . `\"true\"` if this item is used when the object is checked. It's `\"false\"` if it\n is used when the object is deselected.\n\n `android:state_enabled`\n : *Boolean* . `\"true\"` if this item is used when the object is enabled, capable of\n receiving touch or click events. It's `\"false\"` if it is used when the object is disabled.\n\n `android:state_window_focused`\n : *Boolean* . `\"true\"` if this item is used when the application window has focus,\n meaning the\n application is in the foreground. It's `\"false\"` if this item is used when the application\n window doesn't have focus, such as if the notification shade is pulled down or a dialog appears.\n\n **Note:** The first item in the state list that\n matches the current state of the object is applied. So, if the first item in the list contains\n none of the preceding state attributes, then it applies every time. For this reason, place your\n default value last, as shown in the following example.\n\n\nexample:\n : XML file saved at `res/color/button_text.xml`: \n\n ```xml\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cselector xmlns:android=\"http://schemas.android.com/apk/res/android\"\u003e\n \u003citem android:state_pressed=\"true\"\n android:color=\"#ffff0000\"/\u003e \u003c!-- pressed --\u003e\n \u003citem android:state_focused=\"true\"\n android:color=\"#ff0000ff\"/\u003e \u003c!-- focused --\u003e\n \u003citem android:color=\"#ff000000\"/\u003e \u003c!-- default --\u003e\n \u003c/selector\u003e\n ```\n\n\n The following layout XML applies the color list to a `View`:\n\n ```xml\n \u003cButton\n android:layout_width=\"fill_parent\"\n android:layout_height=\"wrap_content\"\n android:text=\"@string/button_text\"\n android:textColor=\"@color/button_text\" /\u003e\n ```\n\nsee also:\n:\n - [Color (simple value)](/guide/topics/resources/more-resources#Color)\n - [ColorStateList](/reference/android/content/res/ColorStateList)\n - [State list drawable](/guide/topics/resources/drawable-resource#StateList)"]]