2012-06-18 15 views
16

Esiste un modo per modificare il colore predefinito della finestra di dialogo DatePicker e TimePicker?Come modificare il colore predefinito della finestra di dialogo DatePicker e TimePicker in Android?

Questo è il codice ho provato

<DatePicker 
        style="@style/date_picker" 
        android:background="#6495ED" 
        android:id="@+id/DatePicker" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:layout_marginBottom="5dp" 
        android:layout_marginLeft="5dip" 
        android:layout_marginRight="5dip" /> 

<TimePicker 
        android:id="@+id/TimePicker" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:layout_marginBottom="5dp" 
        android:layout_marginLeft="5dip" 
        android:layout_marginRight="5dip" /> 

Di seguito due linee solo cambiando il colore di sfondo, voglio cambiare il colore d'argento di default sia di data e ora picker.
Qualsiasi aiuto per favore.

style="@style/date_picker" 
android:background="#6495ED" 

risposta

6

È necessario creare un tema personalizzato e salvarlo in alcune directory per impostare finalmente questo tema come quello di default per l'applicazione

In primo luogo, in valori aggiungere un themes.xml come questo:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyAppTheme" parent="@android:style/Theme.Light.NoTitleBar"> 
     <!-- Any customizations for your app running on pre-3.0 devices here --> 
    </style> 
</resources> 

Poi, creare una directory con il nome di "valori-V11" (Android 3.0+) nella directory res e mettere un themes.xml come questo

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light"> 
     <!-- Any customizations for your app running on 3.0+ devices here --> 
    </style> 
</resources> 

Infine, creare una directory con il nome di "valori-V14" (Android 4.0+) nella directory res e creare un themes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MyAppTheme" parent="@android:style/Theme.DeviceDefault.Light.NoActionBar"> 
     <!-- Any customizations for your app running on 4.0+ devices here --> 
    </style> 
</resources> 

Infine nel vostro manifest.xml

<application 
     ... 
     android:theme="@style/MyAppTheme"> 
+3

Questa sarebbe la strada da percorrere se l'attributo che doveva essere modificato fosse pubblico. Purtroppo, non tutti gli attributi utilizzati per lo stile dei widget sono pubblici. Per essere onesti, non è nemmeno chiaro di quale attributo l'OP sta parlando. – Vikram

3

Penso che non ci sia modo di cambiare facilmente il colore grigio dei vecchi widget di selezione nativa in XML.

Vi propongo di utilizzare la libreria HoloEverywhere in modo che DatePicker e TimePicker sembrino davvero belli su tutte le piattaforme Android 2.1+.

3

è possibile modificare il tema del tuo data-selettore cambiando tema come questo.

cambia gli articoli secondo voi.

<style name="date_picker" parent="@android:style/Widget.DeviceDefault.DatePicker"> 
<item name="android:divider">@drawable/dialog_divider</item> 

elementi di cambiamento secondo voi. e impostare questo tema per il vostro stile di dati-picker

style="@style/date_picker" 
+0

Questo è utile solo per il nuovo DatePicker e TimePicker, non per Android 4.x inferiore con quel "colore argento". –

+1

@ JuliaHexen, @ KKC [Controlla questa lib] (https://github.com/luminousman/DatePicker) questo è risolvibile per la versione inferiore di Android 4.x con il tuo cambio di colore argento di sfondo –

+0

Questa è una libreria con TimePicker self-coded e DatePicker, non con le classi Android native - che sono LinearLayouts "normali".E se uso una libreria, prenderei HoloEverywhere perché è molto più bello dei vecchi widget di crap Android ^^ –

8

Il modo migliore per cambiare la finestra di dialogo selettore è con l'aggiunta di stile personalizzato ad esso.

<style name="TimePickerTheme" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="colorAccent">@color/color_primary</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:layout_height">wrap_content</item> 
</style> 

TimePickerDialog timePicker = new TimePickerDialog(mContext, R.style.TimePickerTheme, fromListener, hour, min, false); 

Ha funzionato perfettamente per me.

+0

Questa è una risposta perfetta! – krisDrOid

+0

in qui cosa è l'oggetto fromlistener ??? –

+0

TimePickerDialog.OnTimeSetListener – Godwin

Problemi correlati