2012-12-06 22 views
25

Ho un'immagine in due colori diversi, corrispondenti a due temi diversi in Android. Voglio usarli nella mia barra delle azioni. Voglio riferirmi a un drawable per l'icona, a tema agnostico, ma avere quel riferimento disegnabile il colore della luce per il tema della luce, e il colore scuro per il tema della luce.Cambia disegno in base al tema

Nel menu:

<item 
     android:id="@+id/menu_attach_existing_picture" 
     android:icon="@drawable/buttonface_picture" 
     android:showAsAction="always" 
     android:title="@string/menu_attach_existing_picture"> 
    </item> 

Poi negli stili voglio avere qualcosa che le mappe @ drawable/buttonface_picture a @ drawable/buttonface_picture_light nel tema luce e @ drawable/buttonface_picture_dark per il tema scuro.

Mi sento come se ci fosse un modo, ma sto avendo problemi a trovare la sintassi. Se cambia qualcosa, sto usando ActionBarSherlock.

risposta

59

Sembra che io sia sempre solo una ricerca di Google o due lontano dalle mie risposte. La soluzione è:

in styles.xml

<attr name="buttonface_picture" format="reference"/> 

poi nel tema attuale:

<item name="buttonface_picture">@drawable/buttonface_picture_dark</item> 

o

<item name="buttonface_picture">@drawable/buttonface_picture_light</item> 

Poi, nel menu.xml:

<item 
    android:id="@+id/menu_attach_existing_picture" 
    android:icon="?attr/buttonface_picture" 
    android:showAsAction="always" 
    android:title="@string/menu_attach_existing_picture"> 
</item> 

Il Accessing Resources Page combinato con this SO alla fine mi ha fatto fare clic nel cervello.

Problemi correlati