ColorStateList
adalah objek yang dapat ditentukan dalam XML dan diterapkan sebagai warna yang benar-benar mengubah warna, bergantung pada
status objek View
yang menjadi
tujuan penerapannya. Misalnya, widget Button
dapat berada dalam salah satu status berikut: ditekan, difokuskan, atau tidak keduanya. Dengan menggunakan daftar status warna,
Anda dapat memberikan warna yang berbeda untuk setiap status.
Anda bisa menjelaskan daftar keadaan dalam file XML. Setiap warna ditentukan dalam elemen <item>
di elemen <selector>
tunggal. Setiap <item>
menggunakan berbagai atribut untuk menjelaskan status yang digunakan.
Pada setiap perubahan status, daftar status akan ditelusuri dari atas ke bawah, dan item pertama
yang cocok dengan status saat ini akan digunakan. Pilihan ini tidak didasarkan pada kecocokan "terbaik",
tetapi lebih ke 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 digunakan sebagai ID resource.
- jenis data resource yang dihimpun:
- Pointer 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: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>
- elemen:
-
<selector>
- Wajib. Elemen ini adalah elemen root. Berisi satu atau beberapa elemen
<item>
.
Atribut:
xmlns:android
- String. Wajib. Menentukan namespace XML, yaitu
"http://schemas.android.com/apk/res/android"
.
<item>
- Menentukan warna yang akan digunakan pada status tertentu, seperti yang dijelaskan oleh atributnya. Elemen ini adalah
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:lStar
- Floating point. Opsional. Atribut ini memodifikasi luminans persepsi warna dasar. Dibutuhkan
nilai floating point antara 0 dan 100 atau atribut tema yang me-resolve seperti itu. Warna
keseluruhan item dihitung dengan mengonversi warna dasar menjadi ruang warna
yang mudah diakses dan menyetel L* ke nilai yang ditentukan pada atribut
lStar
.
Contoh: android:lStar="50"
android:state_pressed
- Boolean.
"true"
jika item ini digunakan saat objek diketuk, seperti saat tombol
disentuh atau diklik. "false"
jika item ini digunakan dalam status default, tidak diketuk.
android:state_focused
- Boolean.
"true"
jika item ini digunakan saat objek difokuskan, seperti saat tombol
disorot menggunakan trackball atau D-pad. "false"
jika item ini digunakan dalam status default,
tidak difokuskan.
android:state_selected
- Boolean.
"true"
jika item ini digunakan saat objek dipilih, seperti saat
tab dibuka. "false"
jika item ini digunakan saat objek tidak dipilih.
android:state_checkable
- Boolean.
"true"
jika item ini digunakan saat objek dapat dicentang. "false"
jika item
ini 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 digunakan saat objek dicentang. "false"
jika
digunakan saat objek batal dipilih.
android:state_enabled
- Boolean.
"true"
jika item ini digunakan saat objek diaktifkan, dan dapat
menerima peristiwa sentuh atau klik. "false"
jika digunakan saat objek dinonaktifkan.
android:state_window_focused
- Boolean.
"true"
jika item ini digunakan saat jendela aplikasi sedang difokuskan,
artinya
aplikasi berada di latar depan. "false"
jika item ini digunakan saat jendela
aplikasi tidak sedang difokuskan, misalnya jika menu notifikasi ditarik ke bawah atau dialog muncul.
Catatan: Item pertama dalam daftar status
yang sesuai dengan status objek saat ini diterapkan. Jadi, jika item pertama dalam daftar
tidak berisi atribut status sebelumnya, item tersebut akan berlaku setiap saat. Karena alasan ini, tempatkan
nilai default Anda di akhir, seperti ditunjukkan pada contoh berikut.
- 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 berikut menerapkan daftar warna ke View
:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- lihat juga:
-