Resource daftar status warna

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: