Zasób listy stanów kolorów

ColorStateList to obiekt, który można zdefiniować w kodzie XML i zastosować jako kolor, który faktycznie zmienia kolory w zależności stan obiektu View do których zastosowano. Przykład: Button widżet może znajdować się w jednym z kilku stanów: kliknąć, zaznaczyć albo żaden. Za pomocą listy stanów kolorów możesz podać inny kolor dla każdego stanu.

Listę stanów opisujesz w pliku XML. Każdy kolor jest zdefiniowany w elemencie <item> wewnątrz pojedynczego elementu <selector>. Co <item> ma różne atrybuty do opisania stanu, w jakim jest zastosowany.

Podczas każdej zmiany stanu lista stanów jest przesuwana od góry do dołu. Pierwszy element, który pasuje do bieżącego stanu. Wybór nie jest wybierany na podstawie „najlepszego” ale raczej pierwszy element, który spełnia minimalne kryteria stanu.

Uwaga: jeśli chcesz udostępnić statyczny zasób koloru, użyj atrybutu kolor prostą wartość color.

lokalizacja pliku:

res/color/filename.xml(
) Nazwa pliku jest używana jako identyfikator zasobu.
skompilowany typ danych zasobu:
Wskaźnik zasobu ColorStateList
odniesienie do zasobu:
W języku Java: R.color.filename
W pliku XML: @[package:]color/filename
składnia:
<?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>
elementy:
<selector>
Wymagane. To jest element główny. Zawiera co najmniej 1 element <item>.

Atrybuty:

xmlns:android
Ciąg znaków. Wymagane. Definiuje przestrzeń nazw XML, która jest "http://schemas.android.com/apk/res/android"
<item>
Określa kolor używany w określonych stanach, zgodnie z jego atrybutami. Jest to element podrzędny elementu <selector>.

Atrybuty:

android:color
Kolor sześciokątny. Wymagany. Kolor jest określony za pomocą atrybutu Wartość RGB i opcjonalny kanał alfa.

Wartość zawsze zaczyna się od znaku funta (#), po którym następuje znak Informacje w kolorach alfa-czerwonym, zielonym i niebieskim w jednym z tych formatów:

  • #RGB
  • #ARGB
  • #RRGGBB
  • Numer AARRGGBB
android:lStar
Liczba zmiennoprzecinkowa. Atrybut opcjonalny. Ten atrybut modyfikuje luminancję percepcyjną koloru podstawowego. Konieczne jest zmiennoprzecinkową z zakresu od 0 do 100 lub atrybut tematu, który ma taką postać. Atrybut ogólny kolor jest obliczany przez konwersję koloru podstawowego na przestrzeń kolorów przyjazną dla ułatwień dostępu. a jego L* na wartość określoną w atrybucie lStar.

Przykład: android:lStar="50"

android:state_pressed
Wartość logiczna. "true", jeśli ten element jest używany podczas klikania obiektu (np. przycisku) użytkownik może kliknąć dany element. Jeśli ten element jest używany domyślnie, bez kliknięcia, jest to "false".
android:state_focused
Wartość logiczna. "true", jeśli ten element jest używany, gdy obiekt jest zaznaczony – np. gdy przycisk zostanie podświetlony za pomocą kulki lub pada kierunkowego. Jeśli ten element jest używany domyślnie, wartość wynosi "false". i stan niezaznaczony.
android:state_selected
Wartość logiczna. "true", jeśli ten element jest używany, gdy obiekt jest zaznaczony, na przykład Karta jest otwarta. Jeśli ten element był użyty, gdy obiekt nie został wybrany, jest to "false".
android:state_checkable
Wartość logiczna. "true", jeśli ten element jest używany, gdy obiekt można zaznaczyć. Jest to "false", jeśli jest używany, gdy obiektu nie można zaznaczyć. Przydatny tylko wtedy, gdy obiekt może przejście między widżetami, które można zaznaczyć lub których nie można zaznaczyć.
android:state_checked
Wartość logiczna. "true", jeśli ten element jest używany, gdy obiekt jest sprawdzany. Jeśli będzie: "false" jest używane, gdy obiekt jest odznaczony.
android:state_enabled
Wartość logiczna. "true", jeśli ten element jest używany, gdy obiekt jest włączony, z możliwością takich działań. Wartość "false", jeśli jest używana, gdy obiekt jest wyłączony.
android:state_window_focused
Wartość logiczna. "true", jeśli ten element jest używany, gdy okno aplikacji jest zaznaczone, czyli Aplikacja działa na pierwszym planie. Wartość "false", jeśli ten element jest używany, gdy aplikacja okno jest nieaktywne, np. gdy obszar powiadomień został przesunięty w dół lub pojawi się okno.

Uwaga: pierwszy element na liście stanów, w którym występuje pasuje do bieżącego stanu obiektu. Jeśli więc pierwszy element na liście zawiera żadnego z poprzednich atrybutów stanu, będzie on stosowany za każdym razem. Z tego powodu umieść jak widać w następnym przykładzie.

przykład:
Plik XML zapisany o 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>

Ten układ XML układu stosuje listę kolorów do elementu View:

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:textColor="@color/button_text" />
zobacz też: