Configuración del color del encabezado en el nuevo Material DatePicker

Así que estoy tratando de cambiar el color de la cabecera de mi DatePicker. No parece tan fácil como primero sin embargo. Usted puede hacerlo en el XML así:

android:headerBackground="@color/myColor" /> 

Sin embargo, no parece ser una manera de poder hacer esto en código. Los setters habituales no parecen ser aparentes (es decir, datePicker.setHeaderBackground ).

¿Algunas ideas?

4 Solutions collect form web for “Configuración del color del encabezado en el nuevo Material DatePicker”

Aquí está el método para cambiar el fondo del encabezado de DatePickerDialog :

 private void setDatePickerHeaderBackgroundColor(DatePickerDialog dpd, int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { try { Field mDatePickerField; mDatePickerField = DatePickerDialog.class.getDeclaredField("mDatePicker"); mDatePickerField.setAccessible(true); final DatePicker mDatePicker = (DatePicker) mDatePickerField.get(dpd); int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android"); final View header = mDatePicker.findViewById(headerId); header.setBackgroundColor(color); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } 

Como puedes ver, estoy usando la reflexión de java para Lollipop y encima para obtener la vista de cabecera.

Uso:

  DatePickerDialog dpd = new DatePickerDialog(this, this, 2016, 0, 11); setDatePickerHeaderBackgroundColor(dpd, getResources().getColor(android.R.color.black)); dpd.show(); 

Como resultado tenemos:

Api> = piruleta

EDITAR:

En caso de que sólo desea establecer el fondo del encabezado de DatePicker , que ha creado en xml, se olvidó de la reflexión de java, sólo tiene que utilizar estas líneas para conseguir que funcione:

  DatePicker mDatePicker = (DatePicker) findViewById(R.id.date_picker); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { int headerId = Resources.getSystem().getIdentifier("day_picker_selector_layout", "id", "android"); final View header = mDatePicker.findViewById(headerId); header.setBackgroundColor(getResources().getColor(android.R.color.black)); } 

Cree un diálogo personalizado datepicker. Vea este enlace una vez.

Puede utilizar setAccentColor () para cambiar el color del encabezado de este ejemplo. Utilizarlo como dpd.setAccentColor(Color.BLUE); . Si no desea que este color a los botones, sólo hay que eliminar las líneas de la clase 'DatePickerDialog'.

 okButton.setTextColor(mAccentColor); cancelButton.setTextColor(mAccentColor); 

Necesita anular su DatePickerStyle , siga los pasos,

1) Anule DatePickerDialogTheme dentro del tema base de la aplicación:

 <style name="AppBaseTheme" parent="android:Theme.Material.Light"> .... <item name="android:datePickerDialogTheme">@style/CustomDatePickerDialogTheme</item> </style> 

2) Definir CustomDatePickerDialogTheme

 <style name="CustomDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog"> <item name="android:datePickerStyle">@style/CustomDatePickerStyle</item> </style> 

3) DatePickerStyle sobreescrito con el estilo CustomDatePickerStyle

 <style name="CustomDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker"> <item name="android:headerBackground">@color/header_bg_color</item> </style> 

Espero eso ayude.

Edit: Lo siento por perderse la parte de código, Utilice este estilo para crear DatePickerDialog como este:

 new DatePickerDialog(getActivity(),R.style.CustomDatePickerStyle, this, year, month, day); 

Crear este estilo:

 <style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker"> <item name="android:headerBackground">@color/chosen_header_bg_color</item> </style 

Y agrega este estilo al tema del diálogo:

 <style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog"> <item name="android:datePickerStyle">@style/MyDatePickerStyle</item> </style> 

Y agrega este diálogo al tema de tu aplicación:

 <style name="MyDatePickerStyle" parent="@android:style/Widget.Material.Light.DatePicker"> <item name="android:headerBackground">@color/chosen_header_bg_color</item> </style> 

Es muy wll explicado aquí: Change Datepicker color de diálogo para Android 5.0

Y esto funcionó para mí.

  • Android: Personajes dejados atrás en EditText
  • ¿Qué hace a Guice incapaz de funcionar en Android excepto como Guice-no-aop?
  • Portando el servidor java a Android
  • Cómo obtener el número de artículo (posición) de una cadena
  • ¿Cómo implemento correctamente Immersive Full-Screen Mode en Android?
  • Escritura de arreglos de Parcelables a un paquete en Android
  • ¿Por qué los nombres de las variables a menudo comienzan con la letra "m"?
  • Jar Mismatch Se encontraron 2 versiones de android-support-v4.jar en la lista de dependencias
  • ejecutar el comando SSH en Rasperry Pi con la aplicación para Android
  • ¿Cómo obtener contactos en orden de sus próximos cumpleaños?
  • Gradle configuration.apt definición
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.