Ressource für Liste der Farbstatus

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

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

Bei jeder Statusänderung wird die Statusliste von oben nach unten durchlaufen. Das erste Element, das mit dem aktuellen Status übereinstimmt. Die Auswahl basiert nicht auf der „besten“ Variante. sondern das erste Element, das die Mindestkriterien für den Bundesstaat erfüllt.

Hinweis:Wenn Sie eine statische Farbressource bereitstellen möchten, verwenden Sie ein Objekt einfachen Wert für color.

Dateispeicherort:
res/color/filename.xml
Der Dateiname wird als Ressourcen-ID verwendet.
Datentyp der kompilierten Ressource:
Ressourcenzeiger auf ein ColorStateList
Ressourcenreferenz:
In Java: R.color.filename
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, der "http://schemas.android.com/apk/res/android"
<item>
Definiert eine Farbe, die bei bestimmten Zuständen verwendet werden soll, wie durch ihre Attribute beschrieben. Es ist ein einem <selector>-Element untergeordnet ist.

Attribute:

android:color
Hexadeximale Farbe. Erforderlich. Die Farbe wird mit einem RGB-Wert und optionaler Alphakanal.

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

  • RGB
  • ARGB
  • RRGGBB
  • #AARRGGBB
android:lStar
Gleitkomma. Optional. Mit diesem Attribut wird die Wahrnehmung der Leuchtdichte der Grundfarbe geändert. Dazu ist entweder eine ein Gleitkommawert zwischen 0 und 100 oder ein Themenattribut, das als solches aufgelöst wird. Das Element Die Gesamtfarbe wird berechnet, indem die Grundfarbe in einen barrierefreien Farbraum konvertiert wird. und sein L* auf den im Attribut lStar angegebenen Wert setzen.

Beispiel: android:lStar="50"

android:state_pressed
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn auf das Objekt getippt wird, beispielsweise wenn eine Schaltfläche die berührt oder angeklickt werden. Es ist "false", wenn dieses Element im Standardstatus verwendet wird, also nicht angetippt wird.
android:state_focused
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Objekt fokussiert ist, beispielsweise wenn eine Schaltfläche mit dem Trackball oder dem Steuerkreuz hervorgehoben. Es ist "false", wenn dieses Element im Standard verwendet wird, nicht fokussiert sein.
android:state_selected
Boolescher Wert. "true", wenn dieses Element bei der Auswahl des Objekts verwendet wird, beispielsweise wenn ein Tab geöffnet. Es ist "false", wenn dieses Element verwendet wird, obwohl das Objekt nicht ausgewählt ist.
android:state_checkable
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Objekt überprüfbar ist. Es ist "false", wenn item wird verwendet, wenn das Objekt nicht überprüfbar ist. Nur nützlich, wenn das Objekt zwischen einem prüfbaren und einem nicht prüfbaren Widget.
android:state_checked
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Objekt geprüft wird. Es ist "false", wenn wird verwendet, wenn die Auswahl des Objekts aufgehoben wird.
android:state_enabled
Boolescher Wert. "true", wenn dieses Element verwendet wird, wenn das Objekt aktiviert ist, das Folgendes kann: Touch- oder Click-Events empfangen. Der Wert "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, Das bedeutet: im Vordergrund ausgeführt wird. Es ist "false", wenn dieses Element während der Anwendung verwendet wird nicht im Fokus, z. B. wenn die Benachrichtigungsleiste heruntergezogen oder ein Dialogfeld angezeigt wird.

Hinweis:Der erste Punkt in der Liste der Bundesstaaten, mit dem aktuellen Status des Objekts übereinstimmt. Wenn also das erste Element in der Liste keines der vorangehenden Statusattribute, wird es jedes Mal angewendet. Aus diesem Grund sollten Sie haben, 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: