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