2016-02-06 40 views
8

Ho definito due temi con colori primari, scuri primari, luce primaria e colori di accento diversi.Android: come utilizzare i colori del tema corrente in un xml estraibile?

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 
</style> 

<style name="AppTheme2" parent="AppTheme"> 
    <item name="colorPrimary">@color/primary_2</item> 
    <item name="colorPrimaryDark">@color/primary_dark_2</item> 
    <item name="colorAccent">@color/accent_2</item> 
</style> 

AppTheme è predefinito per <application/> Poi ho impostato AppTheme2 in attività specifiche.

In un file XML drawable sto usando gli stessi colori primari della AppTheme definiti colors.xml

Il drawable viene utilizzato in molte attività da entrambi i temi, così quando c'è AppTheme2 vedo i diversi colori. C'è un modo per rendere il disegnabile utilizzare i colori del tema corrente per l'attività corrente?

risposta

16

È possibile utilizzare questo attributo per ottenere il colore da tema attualmente utilizzata:

android:color="?colorPrimary" 

Questo è possibile solo in Android 5.0 o superiore.

+1

c'è comunque per farlo in Android 4? o devo farlo in modo programmatico? –

+0

sembra così ... https://developer.android.com/training/material/compatibility.html –

+1

purtroppo non funziona per il mio progetto xamarin, dopo aver cambiato gradle ottengo strane eccezioni –