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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top