Imposible hacer que mi DatePickerDialog utilice un estilo de hilandero mediante programación

Estoy utilizando un DialogFragment para abrir un DatePickerDialog

public class DatePickerFragment extends DialogFragment{ @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of DatePickerDialog and return it DatePickerDialog DatePickerDialog = new DatePickerDialog(getActivity(), (ProfileCreationActivity)getActivity(), year, month, day); return DatePickerDialog; } 

}

Estoy consiguiendo una mirada del calendario que preferiría que un aspecto del hilandero

Lo intenté:

 datePickerDialog.getDatePicker().setCalendarViewShown(false); 

y

 datePickerDialog.getDatePicker().setLayoutMode(1); 

no funciona.

Tenga en cuenta que quiero que el hilandero busque una actividad, pero que quiero que la vista del calendario para otra actividad. Así que no puedo cambiar el estilo completo de la aplicación. Necesito un estilo personalizado para una actividad.

Gracias

He encontrado una explicación en el siguiente post (que describe un problema muy similar al mío):

Diseño de material Android Inline Datepicker issue

De hecho, el setCalendarViewShown (false) y setSpinnersShown (true) no funcionan aparentemente en las últimas versiones.

Tenemos que usar un atributo XML explícito como este android: datePickerMode = "spinner" .

El problema es que estoy utilizando un DialogFragment sin ningún formato XML (sólo un diálogo selector de fecha). Por lo tanto, no puedo establecer ningún atributo XML.

La solución es crear un cuadro de diálogo personalizado dedicado con un archivo de diseño XML utilizando el atributo solicitado.

Puede mantenerlo de forma programática, no necesita crear un nuevo XML con el hilandero, simplemente cambié mi estilo de AppTheme (v21) y trabajé 😉

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="colorControlActivated">@color/colorPrimary</item> <item name="android:timePickerDialogTheme">@style/PickerDialogCustom</item> <item name="android:datePickerDialogTheme">@style/PickerDialogCustom</item> <item name="alertDialogTheme">@style/AlertDialogCustom</item> </style> <style name="PickerDialogCustom" parent="AlertDialogCustom"> <item name="android:textColor">@color/colorPrimary</item> <item name="android:textColorPrimary">@color/colorPrimaryDark</item> <item name="colorControlNormal">@color/greyLight500</item> <item name="android:layout_margin">2dp</item> <item name="android:datePickerMode">spinner</item> </style> <style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorAccent">@color/colorPrimary</item> <item name="android:positiveButtonText">@color/colorPrimary</item> <item name="android:negativeButtonText">@color/greyDark200</item> <item name="buttonBarNegativeButtonStyle">@style/negativeButton</item> <item name="android:datePickerStyle">@style/PickerDialogCustom</item> </style> 

Recuerde mantener el soporte para <21 simplemente agregando esta línea, este comando se ignora para> = 21

 datePickerDialog.getDatePicker().setLayoutMode(1); 
  • Cambiar los textos de los botones de DatePickerDialog
  • Fecha y hora Validación en android usando edittext oyente
  • DatePicker con un fondo
  • Vista del Calendario de Android para el selector de fechas
  • Dos selectores de fechas en la misma actividad Android
  • Establecer fecha y hora seleccionador de fecha y hora en android
  • Vista del calendario de Android de DatePicker
  • fondo blanco para el selector de fecha diálogo sombra
  • Cómo desactivar las fechas anteriores a la fecha de hoy en DatePickerDialog Android?
  • Establece los límites de fechas de datepicker de android
  • Cómo cambiar el texto en datepicker?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.