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>
- 要素:
- 例:
- 次の 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" />
- 関連項目: