Mostrar la selección del año primero en la vista del calendario de Android

Después de Lollipop, DatePicker tener un calenderview muy hermoso para seleccionar la fecha. Pero la cuestión es seleccionar el año. La mayoría de las personas comunes que enfrentan problemas para seleccionar el año. Simplemente se desplazan. Se tarda demasiado tiempo en desplazarse para cambiar los años. Así que necesito mostrar la selección de año primero cuando abra Datepicker Dialog en android.

El Datepicker normalmente se abre como abajo uno:

Introduzca aquí la descripción de la imagen

Pero debe comenzar a partir de la selección del año. Como debajo de uno:

Introduzca aquí la descripción de la imagen

No hay manera muy confiable de hacer eso:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatePicker datePicker = (DatePicker) findViewById(R.id.test); openYearView(datePicker); } private void openYearView(DatePicker datePicker) { try { Field mDelegateField = datePicker.getClass().getDeclaredField("mDelegate"); mDelegateField.setAccessible(true); Object delegate = mDelegateField.get(datePicker); Method setCurrentViewMethod = delegate.getClass().getDeclaredMethod("setCurrentView", int.class); setCurrentViewMethod.setAccessible(true); setCurrentViewMethod.invoke(delegate, 1); } catch (NoSuchFieldException | IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { } } 

Puede utilizar la biblioteca android-betterpickers .

Para el referance, usted puede intentar el acoplamiento abajo: El uso es bastante directo una vez que usted agrega la biblioteca a su proyecto.

 // Create date picker listener. CalendarDatePickerDialog.OnDateSetListener dateSetListener = new CalendarDatePickerDialog.OnDateSetListener() { @Override public void onDateSet(CalendarDatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth) { // Set date from user input. Calendar date = Calendar.getInstance(); date.set(Calendar.HOUR_OF_DAY, 9); date.set(Calendar.MINUTE, 0); date.set(Calendar.YEAR, year); date.set(Calendar.MONTH, monthOfYear); date.set(Calendar.DAY_OF_MONTH, dayOfMonth); // Do as you please with the date. } }; // Create dismiss listener. CalendarDatePickerDialog.OnDialogDismissListener dismissListener = new CalendarDatePickerDialog.OnDialogDismissListener() { @Override public void onDialogDismiss(DialogInterface dialoginterface) { // Do something when the user dismisses the dialog. } }; // Show date picker dialog. CalendarDatePickerDialog dialog = new CalendarDatePickerDialog(); dialog.setOnDateSetListener(dateSetListener); dialog.setOnDismissListener(dismissListener); dialog.setThemeDark(false); dialog.show(getSupportFragmentManager(), "DATE_PICKER_TAG"); 

Para más ayuda: por favor, siga el enlace de referencia: Android Material Design Datepicker con AppCompat

  • Dialogo de fechapicker sin visualización de calendario en lollipop ?
  • CalendarViewShown no está siendo reconocido en Android 5.0 Lollipop
  • Limitación de fechas de Android DatePicker
  • BetterPickers sin una biblioteca de soporte
  • Establece los límites de fechas de datepicker de android
  • Lollipop CalenderView DatePicker no llama al método OnDateChanged ()
  • Fecha de formato de Android a MM-DD-AAAA de Datepicker
  • Problema de compatibilidad de Android DatePicker con la biblioteca MonkeyTalk
  • SetMinDate () para DatePicker
  • Cómo establecer datePickerMode = "spinner" de forma programática?
  • DatePicker se bloquea en mi dispositivo cuando se hace clic (con una aplicación personal)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.