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:
- Diálogo de selección de fecha y hora
- Android: ¿por qué Callback OnDateChange se llama dos veces?
- Cómo cambiar los colores "Dividers" de Dialog de DatePicker de Android
- DatePicker.OnDateChangedListener llamado dos veces
- Jelly Bean DatePickerDialog - ¿hay una manera de cancelar?
Pero debe comenzar a partir de la selección del año. Como debajo de uno:
- Cómo deshabilitar fechas futuras en el selector de fechas de Android
- Obtener fecha de datepicker usando dialogfragment
- Cómo crear un nuevo cuadro de diálogo "circle" datepicker android
- Custom DatePicker en Android?
- Android: ¿Cómo cambiar el formato de fecha de vista de DatePicker de MM / dd / aaaa a dd / MM / aaaa?
- Establecer idioma en francés en android DatePickerDialog
- JQuery Data Time selector que funciona bien en iOS / Android
- Usar TimePicker o DatePicker en la pantalla Preferencias en Android
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
- Android Studio 0.8.1 Fusión de manifiesto $ {applicationId} no disponible
- Depuración NDK de Android: armeabi-v7a no funciona