2014-12-05 10 views
7

Sto utilizzando la libreria di supporto 21 per la mia app. Il tema è anche definito in valori-v21, ma lo DatePickerDialog non utilizza il colore di accento per lo sfondo e il colore del testo.Android DatePickerDialog colore accento (in v21 +)

Cosa posso fare per modificare questo colore con il colore dell'accento?

mio themes.xml corrente vengono

valori/themes.xml valori-V21

<style name="AppTheme" parent="AppTheme.Base" /> 

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="windowActionModeOverlay">true</item> 

    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 

/themes.xml

<style name="AppTheme" parent="AppTheme.Base"> 
    <item name="android:colorPrimary">@color/colorPrimary</item> 
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="android:colorAccent">@color/colorAccent</item> 

    <item name="android:alertDialogTheme">@style/AppTheme.AlertDialog</item> 
</style> 

<style name="AppTheme.AlertDialog" parent="android:Theme.Material.Light.Dialog.Alert"> 
    <item name="android:colorPrimary">@color/colorPrimary</item> 
    <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="android:colorAccent">@color/colorAccent</item> 
</style> 
+0

Il tema dell'app definisce un tema di dialogo predefinito. Avrai bisogno di estendere questo tema per includere il tuo colore accento. – alanv

+0

@alanv Ho aggiunto i miei temi (parzialmente funzionanti) al mio post originale. Riesci a vedere il mio errore per DatePickerDialog? – mars3142

risposta

19

Il vostro tema di dialogo ha bisogno di estendere Theme.AppCompat.Light.Dialog invece di Theme.Material.Light.Dialog.Alert . Ecco un esempio:

<!-- Base Theme Styles --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 

    <!-- my theme stuff --> 
    ... 

    <!-- dialog theme stuff --> 
    <item name="android:dialogTheme">@style/AppTheme.DialogTheme</item> 

</style> 

<!-- Styles for pop-up dialogs --> 
<style name="AppTheme.DialogTheme" parent="Theme.AppCompat.Light.Dialog"> 

    <item name="android:colorPrimary">@color/primaryColor</item> 
    <item name="android:colorPrimaryDark">@color/primaryColorDark</item> 
    <item name="android:colorAccent">@color/accentColor</item> 

</style> 
+0

Ma deve essere fatto solo per valori-v21. – kaftanati

+6

@kaftanati non è vero, questo funziona se si utilizza appcompat v21. Devi solo omettere il prefisso 'android:' negli elementi colore. – Tom

+0

Ma ho usato support-appcompat v7 ofr tutti i dispositivi (8+). – kaftanati

Problemi correlati