Renk durumu listesi kaynağı

ColorStateList, XML'de tanımlayabileceğiniz ve uygulandığı View nesnesinin durumuna bağlı olarak renkleri gerçekten değiştiren bir renk olarak uygulayabileceğiniz bir nesnedir. Örneğin, bir Button widget'ı çeşitli durumlardan birinde olabilir: Basılmış, odaklanmış veya hiçbiri. Bir renk durumu listesi kullanarak her eyalet için farklı bir renk sağlayabilirsiniz.

Eyalet listesini bir XML dosyasında açıklarsınız. Her renk, tek bir <selector> öğesinin içindeki <item> öğesinde tanımlanır. Her <item>, kullanıldığı durumu tanımlamak için çeşitli özellikler kullanır.

Her durum değişikliği sırasında, durum listesi yukarıdan aşağıya doğru katedilir ve mevcut durumla eşleşen ilk öğe kullanılır. Seçim "en iyi" eşleşmeye değil, eyaletin minimum ölçütlerini karşılayan ilk öğeye dayalı değildir.

Not: Statik bir renk kaynağı sağlamak istiyorsanız basit bir color değeri kullanın.

dosya konumu:
res/color/filename.xml
Dosya adı, kaynak kimliği olarak kullanılır.
derlenmiş kaynak veri türü:
ColorStateList öğesine kaynak işaretçisi
kaynak referansı:
Java'da: R.color.filename
XML: @[package:]color/filename
söz dizimi:
<?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>
öğeler:
<selector>
Zorunlu. Bu, kök öğedir. Bir veya daha fazla <item> öğesi içerir.

Özellikler:

xmlns:android
Dize. Zorunludur. "http://schemas.android.com/apk/res/android" olan XML ad alanını tanımlar.
<item>
Özellikleri tarafından açıklandığı şekilde, belirli durumlarda kullanılacak bir renk tanımlar. Bu, bir <selector> öğesinin alt öğesidir.

Özellikler:

android:color
Onaltılık renk. Zorunludur. Renk, RGB değeri ve isteğe bağlı alfa kanalıyla belirtilir.

Değer her zaman bir kare (#) karakteriyle başlar ve ardından aşağıdaki biçimlerden birindeki Alfa-Kırmızı-Yeşil-Mavi bilgileri gelir:

  • RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB
android:lStar
Kayan nokta. İsteğe bağlıdır. Bu özellik, taban rengin algılanan parlaklığını değiştirir. 0 ile 100 arasında bir kayan nokta değeri veya bu şekilde çözümlenen bir tema özelliği alır. Öğenin genel rengi, temel rengin erişilebilirlik dostu bir renk alanına dönüştürülmesi ve L* öğesinin lStar özelliğinde belirtilen değere ayarlanmasıyla hesaplanır.

Örnek: android:lStar="50"

android:state_pressed
Boole. Bu öğe, nesneye dokunulduğunda (ör. bir düğmeye dokunulduğunda veya tıklandığında) kullanılıyorsa "true". Bu öğe varsayılan olarak dokunulmamış durumda kullanılırsa bu değer "false" olur.
android:state_focused
Boole. "true" bu öğe nesne odaklanıldığında kullanılıyorsa (örneğin, iztopu veya D-pad ile bir düğme vurgulandığında). Bu öğe varsayılan olarak odaklanmamış durumda kullanılırsa bu değer "false" olur.
android:state_selected
Boole. Bu öğe, nesne seçildiğinde (örneğin bir sekme açıldığında) kullanılıyorsa "true". Nesne seçilmediğinde bu öğeyi kullandıysa bu değer "false"'dir.
android:state_checkable
Boole. Nesne kontrol edilebilirken bu öğe kullanılıyorsa "true". Nesne kontrol edilemezken bu öğe kullanılırsa bu değer "false" olur. Yalnızca, nesne kontrol edilebilir ve işaretlenemez bir widget arasında geçiş yapabiliyorsa yararlıdır.
android:state_checked
Boole. Nesne işaretlendiğinde bu öğe kullanılırsa "true". Nesnenin seçimi kaldırıldığında kullanılırsa "false" olur.
android:state_enabled
Boole. Bu öğe, dokunma veya tıklama etkinliklerini alabilen nesne etkinleştirildiğinde kullanılıyorsa "true". Nesne devre dışı bırakıldığında kullanılırsa "false" değerini alır.
android:state_window_focused
Boole. Uygulama penceresi odaklanıldığında, yani uygulama ön planda olduğunda bu öğe kullanılıyorsa "true". Bu öğe, bildirim gölgesi aşağı çekildiğinde veya iletişim kutusu göründüğünde uygulama penceresinde odak olmadığında kullanılırsa "false" değerini alır.

Not: Durum listesindeki nesnenin mevcut durumuyla eşleşen ilk öğe uygulanır. Dolayısıyla, listedeki ilk öğe önceki durum özelliklerinin hiçbirini içermiyorsa her defasında uygulanır. Bu nedenle, aşağıdaki örnekte gösterildiği gibi varsayılan değeri en sonda girin.

örnek:
res/color/button_text.xml tarihinde kaydedilen XML dosyası:
<?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>

Aşağıdaki düzen XML'si, renk listesini bir View öğesine uygular:

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:textColor="@color/button_text" />
şuna da bakabilirsiniz: