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:
-