Ressource für Liste der Farbstatus

Ein ColorStateList ist ein Objekt, das Sie in XML definieren und als Farbe anwenden können, die sich je nach Status des View-Objekts ändert, auf das sie angewendet wird. Ein Button-Widget kann beispielsweise einen von mehreren Status haben: gedrückt, fokussiert oder in keinem der beiden Status. Mithilfe einer Farbstatusliste können Sie für jeden Bundesstaat eine andere Farbe angeben.

Sie beschreiben die Liste der Bundesstaaten in einer XML-Datei. Jede Farbe wird in einem <item>-Element innerhalb eines einzelnen <selector>-Elements definiert. Jedes <item> verwendet verschiedene Attribute, um den Status zu beschreiben, in dem er verwendet wird.

Bei jeder Statusänderung wird die Statusliste von oben nach unten durchlaufen und das erste Element, das dem aktuellen Status entspricht, wird verwendet. Die Auswahl basiert nicht auf der „besten“ Übereinstimmung, sondern auf dem ersten Element, das die Mindestkriterien des Bundesstaates erfüllt.

Hinweis: Wenn Sie eine statische Farbressource bereitstellen möchten, verwenden Sie einen einfachen color-Wert.

Dateispeicherort:
res/color/filename.xml
Der Dateiname wird als Ressourcen-ID verwendet.
kompilierter Ressourcentyp:
Ressourcenverweis auf eine ColorStateList
Ressourcenreferenz:
In Java: R.color.filename
In XML: @[package:]color/filename
Syntax:
<?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>
Elemente:
<selector>
Erforderlich. Dies ist das Stammelement. Enthält ein oder mehrere <item>-Elemente.

Attribute:

xmlns:android
String Erforderlich. Definiert den XML-Namespace "http://schemas.android.com/apk/res/android".
<item>
Definiert eine Farbe, die in bestimmten Stadien verwendet wird, wie durch ihre Attribute beschrieben. Es ist einem <selector>-Element untergeordnet.

Attribute:

android:color
Hexadezimale Farbe. Erforderlich. Die Farbe wird mit einem RGB-Wert und einem optionalen Alphakanal angegeben.

Der Wert beginnt immer mit einem Rautezeichen (#), gefolgt von den Informationen „Alpha-Rot-Grün-Blau“ in einem der folgenden Formate:

  • RGB
  • ARGB
  • RRGGBB
  • #AARGGBB
android:lStar
Gleitkomma. Optional. Dieses Attribut ändert die wahrnehmbare Leuchtdichte der Grundfarbe. Es wird entweder ein Gleitkommawert zwischen 0 und 100 oder ein Themaattribut verwendet, das so aufgelöst wird. Die Gesamtfarbe des Elements wird berechnet, indem die Grundfarbe in einen barrierefreien Farbraum umgewandelt und L* auf den Wert festgelegt wird, der für das Attribut lStar angegeben wurde.

Beispiel: android:lStar="50"

android:state_pressed
Boolescher Wert. "true", wenn dieses Element beim Tippen auf das Objekt verwendet wird, z. B. beim Tippen oder Klicken auf eine Schaltfläche Der Wert lautet "false", wenn dieses Element standardmäßig verwendet wird und nicht angetippt wird.
android:state_focused
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Objekt fokussiert ist, z. B. wenn eine Taste mit dem Trackball oder dem Steuerkreuz hervorgehoben wird Der Wert ist "false", wenn dieses Element im Standardzustand ohne Fokus verwendet wird.
android:state_selected
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Objekt ausgewählt wird, z. B. beim Öffnen eines Tabs Der Wert lautet "false", wenn dieses Element verwendet wird, wenn das Objekt nicht ausgewählt ist.
android:state_checkable
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Objekt überprüfbar ist. Der Wert lautet "false", wenn dieses Element verwendet wird und das Objekt nicht überprüfbar ist. Nur nützlich, wenn das Objekt zwischen einem prüfbaren und einem nicht prüfbaren Widget wechseln kann.
android:state_checked
Boolescher Wert. "true", wenn dieses Element beim Prüfen des Objekts verwendet wird. Der Wert ist "false", wenn er bei der Auswahl des Objekts verwendet wird.
android:state_enabled
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Objekt aktiviert ist und Touch- oder Klickereignisse empfangen kann Der Wert lautet "false", wenn er verwendet wird, wenn das Objekt deaktiviert ist.
android:state_window_focused
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Anwendungsfenster im Fokus ist und sich die Anwendung also im Vordergrund befindet. Der Wert "false" ist, wenn dieses Element verwendet wird, wenn das Anwendungsfenster nicht im Fokus ist, z. B. wenn die Benachrichtigungsleiste nach unten gezogen wird oder ein Dialogfeld erscheint.

Hinweis:Das erste Element in der Statusliste, das dem aktuellen Status des Objekts entspricht, wird angewendet. Wenn also das erste Element in der Liste keines der vorherigen Statusattribute enthält, wird es jedes Mal angewendet. Legen Sie den Standardwert daher zuletzt an, wie im folgenden Beispiel gezeigt.

Beispiel:
XML-Datei gespeichert unter 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>

Die folgende Layout-XML wendet die Farbliste auf ein View an:

<Button
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button_text"
    android:textColor="@color/button_text" />
Siehe auch: