In uno stato-list drawable Android, state_focused viene ignorato
Domanda
La mia app Android, che utilizza un TabActivity per visualizzarne il contenuto, ha 4 schede che tutto l'uso di uno stato-list disegnabili per l'icona. Tutti hanno la stessa struttura, solo con immagini diverse:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_options_dark" android:state_selected="true" android:state_focused="false" />
<item android:drawable="@drawable/icon_options_white" />
</selector>`
Tuttavia, quando si seleziona le schede con la trackball sul mio HTC Desire (highlight), l'immagine scura viene usato al posto di quella luce. Non appena una scheda è in realtà selezionato, lo fa diventare bianco. Che cosa sto facendo di sbagliato?
Soluzione
È necessario disporre di elementi diversi per i diversi stati. La combinazione di diversi stati in un elemento (come avete fatto) è sicuramente sbagliato. Il tuo XML può assomigliare a questo:
<xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_options_dark"
android:state_selected="true" />
<item android:drawable="@drawable/icon_options_light"
android:state_focused="true" />
<item android:drawable="@drawable/icon_options_white" />
</selector>
Quando si tratta di disegnare il vostro drawable suo stato viene prima selezionata. Se è selezionata la prima voce danno e basta - non verrà eseguito alcun controllo mirato (Android trova solo prima - non "più rilevante" - stato). Ma se non è selezionata, verrà eseguito il controllo per lo stato focalizzato.