2015-05-28 34 views
8

questa è la prima volta che faccio una domanda.Android: come cambiare il colore del dateelector nel widget Datepicker?

Ho implementato con successo un Datepicker nella mia app (targeting solo SDK 21 e successivi). Voglio anche modellare il mio Datepicker per fondersi con il resto dell'app. Questo è quello che ho:

<style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="android:datePickerStyle">@style/MyDatePickerStyle</item> 
    <item name="android:colorAccent">@color/primDark</item> 
</style> 

<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker"> 
    <item name="android:headerBackground">@color/prim</item> 
    <item name="android:calendarTextColor">@color/primDark</item> 
    <item name="android:dayOfWeekBackground">@color/primDark</item> 
    <item name="android:yearListSelectorColor">@color/accent</item> 
    <item name="android:datePickerMode">calendar</item> 
</style> 

non riesco a trovare l'attributo per cambiare il colore del selettore giorno nel calendario. Nessun attributo elencato allo here. Tuttavia sono stato in grado di cambiare il colore del selettore dell'anno (vedi il lato destro dello screenshot) con l'attributo "yearListSelectorColor". Come posso colorare il selettore corrispondente e il colore del testo selezionato sul lato sinistro?

Per chiarire, questo è ciò che la mia Datepicker assomiglia: Screenshots

Quindi, se qualcuno sa come sbarazzarsi di quel colore verde acqua di serie, la prego di dirmi.

Grazie!

risposta

16

Ok, penso di averlo capito.

Ho cercato disperatamente di trovare un attributo in MyDatePickerStyle. La soluzione mi è venuta in mente quando ho ripensato l'intera gerarchia dell'eredità. Ho appena dovuto aggiungere il colorAccent al MyDatePickerDialogTheme.

<style name="MyDatePickerDialogTheme" parent="Theme.AppCompat.Light.Dialog"> 
    <!-- this is new --> 
    <item name="colorAccent">@color/accent</item> 

    <item name="android:datePickerStyle">@style/MyDatePickerStyle</item> 
    <item name="android:colorAccent">@color/primDark</item> 
</style> 

<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker"> 
    <item name="android:headerBackground">@color/prim</item> 
    <item name="android:calendarTextColor">@color/primDark</item> 
    <item name="android:dayOfWeekBackground">@color/primDark</item> 
    <item name="android:yearListSelectorColor">@color/accent</item> 
    <item name="android:datePickerMode">calendar</item> 
    <item name="android:minDate">01/01/2000</item> 
</style> 

In qualche modo ho pensato che ogni tema ottiene automaticamente i colori primari della AppTheme.

Quindi speriamo che questo possa aiutare qualcuno in futuro.

+0

Questo non funziona per me, il selettore di data non è stato modificato –

+0

Questo funziona https://stackoverflow.com/a/48551810/1621111 –