ColorStateList
adalah objek yang dapat ditentukan dalam XML dan diterapkan sebagai warna, tetapi benar-benar akan berubah warna mengikuti status objek View
yang menjadi tujuan penerapannya. Contohnya, widget Button
dapat berada dalam salah satu status yang ada (ditekan, difokuskan, atau tidak keduanya). Kemudian, dengan menggunakan daftar status warna, Anda dapat memberikan warna yang berbeda pada setiap status.
Anda dapat mendeskripsikan daftar status dalam file XML. Setiap warna ditentukan dalam elemen <item>
di elemen <selector>
tunggal. Setiap <item>
menggunakan berbagai atribut untuk mendeskripsikan status yang akan menggunakannya.
Pada setiap perubahan status, daftar status akan ditelusuri dari atas ke bawah, dan item pertama yang cocok dengan status saat ini akan digunakan; pilihannya tidak didasarkan pada “kecocokan terbaik”, tetapi cukup item pertama yang memenuhi kriteria minimum status.
Catatan: Jika ingin memberikan resource warna statis, gunakan nilai Warna sederhana.
- lokasi file:
res/color/filename.xml
Nama file akan digunakan sebagai ID resource.
- jenis data resource terhimpun:
- Penunjuk resource ke
ColorStateList
.
- referensi resource:
-
Di Java:
R.color.filename
Dalam XML: @[package:]color/filename
- sintaksis:
-
<?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>
- elemen:
-
<selector>
- Wajib. Elemen ini harus menjadi elemen root. Berisi satu atau beberapa elemen
<item>
.
atribut:
xmlns:android
- String. Wajib. Menentukan ruang nama XML, yang harus ditetapkan seperti berikut:
"http://schemas.android.com/apk/res/android"
.
<item>
- Menentukan warna yang akan digunakan pada status tertentu, seperti yang dijelaskan oleh atributnya. Harus merupakan turunan dari elemen
<selector>
.
atribut:
android:color
- Warna heksadesimal. Wajib. Warna ini ditentukan dengan nilai RGB dan saluran alpha opsional.
Nilainya selalu dimulai dengan karakter tagar (#) dan diikuti oleh informasi Alpha-Red-Green-Blue dalam salah satu format berikut:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
android:state_pressed
- Boolean. "true" jika item ini harus digunakan saat objek ditekan (misalnya saat tombol disentuh/diklik); "false" jika item ini harus digunakan dalam status default tidak ditekan.
android:state_focused
- Boolean. "true" jika item ini harus digunakan saat objek difokuskan (seperti saat tombol disorot menggunakan trackball/d-pad); "false" jika item ini harus digunakan dalam status default tidak difokuskan.
android:state_selected
- Boolean. "true" jika item ini harus digunakan saat objek dipilih (seperti saat tab dibuka); "false" jika item ini harus digunakan saat objek tidak dipilih.
android:state_checkable
- Boolean. "true" jika item ini harus digunakan saat objek dapat dicentang; "false" jika item ini harus digunakan saat objek tidak dapat dicentang. (Hanya berguna jika objek dapat beralih antara widget yang dapat dicentang dan yang tidak dapat dicentang.)
android:state_checked
- Boolean. "true" jika item ini harus digunakan saat objek dicentang; "false" jika harus digunakan saat objek tidak dicentang.
android:state_enabled
- Boolean. "true" jika item ini harus digunakan saat objek diaktifkan (mampu menerima peristiwa sentuh/klik); "false" jika harus digunakan saat objek dinonaktifkan.
android:state_window_focused
- Boolean. "true" jika item ini harus digunakan saat jendela aplikasi sedang difokuskan (aplikasi berada di latar depan), "false" jika item ini harus digunakan saat jendela aplikasi sedang tidak difokuskan (misalnya jika menu notifikasi ditarik ke bawah atau dialog muncul).
Catatan: Perlu diingat bahwa item pertama dalam daftar status yang cocok dengan status objek saat ini akan diterapkan. Jadi, jika item pertama dalam daftar tidak berisi atribut status di atas, item akan diterapkan setiap saat; itulah mengapa nilai default Anda harus selalu menjadi yang terakhir, seperti dalam contoh berikut ini.
- contoh:
- File XML yang disimpan di
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 tata letak ini akan menerapkan daftar warna ke Tampilan:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- lihat juga:
-