2012-06-18 16 views
16

¿Hay alguna forma de cambiar el color predeterminado de los cuadros DatePicker y TimePicker?¿Cómo cambiar el color predeterminado del cuadro de diálogo DatePicker y TimePicker en Android?

Este es el código que he intentado

<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" /> 

continuación dos líneas únicamente cambiando el color de fondo, quiero cambiar el color de la plata por defecto de ambos fecha y hora selector.
Cualquier ayuda por favor.

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

Respuesta

6

Tienes que crear un tema personalizado y guardarlo en algunos directorios para establecer finalmente este tema como el que viene por defecto para la aplicación

En primer lugar, en los valores de añadir un themes.xml así:

<?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> 

a continuación, cree un directorio con el nombre de "valores-v11" (Android 3.0+) en el directorio res y poner un themes.xml como esto

<?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> 

Por último, cree un directorio con el nombre de "valores-v14" (Android 4.0 o superior) en el directorio res y crear 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> 

último en su manifest.xml

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

Este sería el camino a seguir si el atributo que necesitaba cambiar era público. Lamentablemente, no todos los atributos utilizados para diseñar widgets son públicos. Para ser honesto, ni siquiera está claro de qué atributo está hablando la OP. – Vikram

3

Creo que no hay forma de cambiar fácilmente el color gris de los viejos widgets del selector nativo en XML.

Propongo que utilice la biblioteca HoloEverywhere para que DatePicker y TimePicker se vean muy bien en todas las plataformas Android 2.1+.

3

puede cambiar el tema de su selector de fecha cambiando el tema de esta manera.

cambie los artículos según usted.

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

artículos cambian de acuerdo con usted. y establecer este tema en el estilo recolector de datos

style="@style/date_picker" 
+0

Esto solo es útil para el nuevo DatePicker y TimePicker, no para el Android 4.x inferior con ese "color plateado". –

+1

@ JuliaHexen, @KKC [Verifique esta lib] (https://github.com/luminousman/DatePicker) esto es solución para la versión inferior Android 4.x con usted cambie su color plateado de fondo –

+0

Esta es una biblioteca con TimePicker auto-codificado y DatePicker, no con las clases nativas de Android, que son LinearLayouts "normales".Y si uso una biblioteca, tomaría el HoloEverywhere porque es mucho más hermoso que los viejos widgets de mierda de Android ^^ –

8

La mejor manera de cambiar el diálogo del selector es mediante la adición de estilo personalizado a ella.

<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); 

Funcionó perfectamente para mí.

+0

¡Esta es la respuesta perfecta! – krisDrOid

+0

aquí qué es fromlistener object ??? –

+0

TimePickerDialog.OnTimeSetListener – Godwin

Cuestiones relacionadas