Cambiar el color del diálogo Datepicker para Android 5.0

¿Es posible cambiar el esquema de color datepicker (y también el timepicker) para Android 5.0?

He intentado configurar los colores de acento, pero esto no funciona (con y sin android: :

  @color/purple  @color/purple_tint  @color/purple_tint 

De original: enter image description here

Para algo como esto: enter image description here

La razón por la cual la sugerencia de Neil resulta en un DatePicker pantalla completa es la elección del tema principal:

   

Además, si realiza esta ruta, debe especificar el tema al crear el DatePickerDialog :

 // R.style.DialogTheme new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { //DO SOMETHING } }, 2015, 02, 26).show(); 

Esto, en mi opinión, no es bueno. Uno debe intentar mantener el estilo fuera de java y dentro de styles.xml / themes.xml.

Estoy de acuerdo en que la sugerencia de Neil, con un poco de cambio (cambiando el tema principal para decir, Theme.Material.Light.Dialog ) obtendrá el resultado deseado. Pero, aquí está la otra forma:

En la primera inspección, nos encontramos con datePickerStyle que define cosas como: headerBackground (lo que está intentando cambiar), dayOfWeekBackground y algunos otros text-colors y text-styles.

Anular este atributo en el tema de su aplicación no funcionará. DatePickerDialog usa un tema separado asignable por el atributo datePickerDialogTheme . Entonces, para que nuestros cambios surtan efecto, debemos anular datePickerStyle dentro de una datePickerDialogTheme .

Aquí vamos:

Anular datePickerDialogTheme dentro del tema base de su aplicación:

  

Defina MyDatePickerDialogTheme . La elección del tema principal dependerá del tema base de su aplicación: podría ser Theme.Material.Dialog o Theme.Material.Light.Dialog :

  

Hemos reemplazado datePickerStyle con el estilo MyDatePickerStyle . La elección del padre dependerá una vez más del tema base de su aplicación: Widget.Material.DatePicker o Widget.Material.Light.DatePicker . Defínalo según tus requisitos:

  

Actualmente, solo estamos reemplazando headerBackground que por defecto está configurado en ?attr/colorAccent (esta es también la razón por la cual la sugerencia de Neil funciona al cambiar el fondo). Pero hay mucha personalización posible:

 dayOfWeekBackground dayOfWeekTextAppearance headerMonthTextAppearance headerDayOfMonthTextAppearance headerYearTextAppearance headerSelectedTextColor yearListItemTextAppearance yearListSelectorColor calendarTextColor calendarSelectedTextColor 

Si no desea este control (personalización), no necesita anular datePickerStyle . colorAccent controla la mayoría de los colores DatePicker's . Por lo tanto, anulando simplemente colorAccent dentro de MyDatePickerDialogTheme debería funcionar:

  

Anulación de colorAccent le brinda la ventaja adicional de cambiar los colores de texto OK y CANCEL también. No está mal.

De esta forma, no tiene que proporcionar ninguna información de estilo al constructor DatePickerDialog's . Todo ha sido conectado correctamente:

 DatePickerDialog dpd = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { } }, 2015, 5, 22); dpd.show(); 

Dale una oportunidad.

El código

 new DatePickerDialog(MainActivity.this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { //DO SOMETHING } }, 2015, 02, 26).show(); 

El estilo en tu archivo styles.xml

EDITAR – Cambió el tema a Theme.AppCompat.Light.Dialog como se sugiere

  

Solo para mencionar, también puedes usar el tema predeterminado, como android.R.style.Theme_DeviceDefault_Light_Dialog .

 new DatePickerDialog(MainActivity.this, android.R.style.Theme_DeviceDefault_Light_Dialog, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { //DO SOMETHING } }, 2015, 02, 26).show(); 

No tiene un tema de creación, solo escríbalo en su objeto de creación de diálogo

 DatePickerDialog datePicker = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_LIGHT,this, mYear, mMonth, mDay); 

sigue esto, te dará todo tipo de estilo de selector de fecha, es realmente trabajo

http://www.android-examples.com/change-datepickerdialog-theme-in-android-using-dialogfragment/

prueba esto, trabaja para mi

Pon las dos opciones, colorAccent y android:colorAccent

   

Tuve el problema de que los botones del selector de tiempo no se habían visto en la pantalla de API 24 en Android. (API 21+) se resuelve por

   
   

Para el color del texto del elemento de la lista de Año cambiante (ESPECÍFICO PARA ANDROID 5.0)

Simplemente configure cierto color de texto en el estilo de diálogo del selector de fecha. Por algún motivo, la configuración del indicador yearListItemTextAppearance no refleja ningún cambio en la lista anual.

 @android:color/black