Un ColorStateList
è un oggetto che puoi definire in XML e applicare come colore che cambia effettivamente colore a seconda dello stato dell'oggetto View
a cui viene applicato. Ad esempio, un widget Button
può trovarsi in uno dei seguenti stati: premuto, attivo o nessuno dei due. Utilizzando un elenco di stati a colori,
puoi fornire un colore diverso per ogni stato.
Descrivi l'elenco degli stati in un file XML. Ogni colore è definito in un elemento <item>
all'interno di un singolo elemento <selector>
. Ogni <item>
utilizza vari attributi per descrivere lo stato in cui viene utilizzato.
Durante ogni modifica di stato, l'elenco degli stati viene spostato dall'alto verso il basso e viene utilizzato il primo elemento che corrisponde allo stato corrente. La selezione non si basa sulla corrispondenza "migliore", ma sul primo elemento che soddisfa i criteri minimi dello stato.
Nota: se vuoi fornire una risorsa colore statico, utilizza un valore semplice color.
- posizione file:
res/color/filename.xml
Il nome file viene utilizzato come ID risorsa.
- tipo di dati della risorsa compilato:
- Puntatore risorsa a un
ColorStateList
- riferimento risorsa:
-
In Java:
R.color.filename
In XML: @[package:]color/filename
- :
-
<?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>
- :
-
<selector>
- Obbligatorio. Questo è l'elemento principale. Contiene uno o più elementi
<item>
.
Attributi:
xmlns:android
- Stringa. Obbligatorio. Definisce lo spazio dei nomi XML, che è
"http://schemas.android.com/apk/res/android"
.
<item>
- Definisce un colore da utilizzare in determinati stati, come descritto dai relativi attributi. È un elemento secondario di un elemento
<selector>
.
Attributi:
android:color
- Colore esadecimale. Obbligatorio. Il colore viene specificato con un valore RGB e un canale alfa facoltativo.
Il valore inizia sempre con un cancelletto (#
), seguito dalle informazioni Alfa-Rosso-Verde-Blu in uno dei seguenti formati:
- #RGB
- #ARGB
- N. RRGGBB
- N. AARRGGBB
android:lStar
- Punto mobile. Facoltativo. Questo attributo modifica la luminanza percettiva del colore di base. È richiesto un valore con virgola mobile compreso tra 0 e 100 o un attributo tema che si risolve come tale. Il colore complessivo dell'elemento viene calcolato convertendo il colore di base in uno spazio colore adatto all'accessibilità e impostando il relativo L* sul valore specificato nell'attributo
lStar
.
Esempio: android:lStar="50"
android:state_pressed
- Booleano.
"true"
se questo elemento viene utilizzato quando l'oggetto viene toccato, ad esempio quando viene toccato o fatto clic su un pulsante. È "false"
se questo elemento viene utilizzato nello stato predefinito non toccato.
android:state_focused
- Booleano.
"true"
se questo elemento viene utilizzato quando l'oggetto è a fuoco, ad esempio quando un pulsante viene evidenziato utilizzando la trackball o il D-pad. È "false"
se questo elemento viene utilizzato nello stato predefinito non attivo.
android:state_selected
- Booleano.
"true"
se questo elemento viene utilizzato quando l'oggetto è selezionato, ad esempio quando viene aperta una scheda. È "false"
se l'elemento è stato utilizzato quando l'oggetto non è selezionato.
android:state_checkable
- Booleano.
"true"
se questo elemento viene utilizzato quando l'oggetto è selezionabile. È "false"
se questo elemento viene utilizzato quando l'oggetto non è controllabile. Utile solo se l'oggetto può passare da un widget verificabile a un non selezionabile.
android:state_checked
- Booleano.
"true"
se questo elemento viene utilizzato quando l'oggetto è selezionato. È "false"
se viene utilizzato quando l'oggetto è deselezionato.
android:state_enabled
- Booleano.
"true"
se questo elemento viene utilizzato quando l'oggetto è abilitato, in grado di ricevere eventi di tocco o clic. È "false"
se viene utilizzato quando l'oggetto è disabilitato.
android:state_window_focused
- Booleano.
"true"
se questo elemento viene utilizzato quando è attiva la finestra dell'applicazione, ovvero l'applicazione è in primo piano. È "false"
se questo elemento viene utilizzato quando la finestra dell'applicazione non è attiva, ad esempio se l'area notifiche è aperta o viene visualizzata una finestra di dialogo.
Nota: viene applicato il primo elemento nell'elenco degli stati che corrisponde allo stato corrente dell'oggetto. Pertanto, se il primo elemento dell'elenco non contiene nessuno degli attributi di stato precedenti, viene applicato ogni volta. Per questo motivo, inserisci il valore predefinito per ultimo, come mostrato nell'esempio seguente.
- esempio:
- File XML salvato in
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>
Il seguente file XML di layout applica l'elenco dei colori a View
:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- consulta anche:
-