Android DatePicker muestra meses no disponibles cuando se usan límites mínimos/máximos
android-datepicker maxdate (2)
OPCIÓN 1. Puedes usar android-times-square
y dar un rango de fechas personalizado para que desaparezca las fechas no disponibles, también da una mayor representación visual
Calendar nextYear = Calendar.getInstance();
nextYear.add(Calendar.YEAR, 1);
CalendarPickerView calendar = (CalendarPickerView) findViewById(R.id.calendar_view);
Date today = new Date();
calendar.init(today, nextYear.getTime())
.inMode(RANGE);
Solo encontré 1 instancia más de este problema en StackOverflow que no fue respondida (el año pasado), así que pensé en darle otra oportunidad. ( Android DatePicker / Dialog muestra el / los mes / es incorrecto / s utilizando la fecha mínima / máxima , con una imagen real)
Al establecer el minDate y el maxDate del Android DatePicker, mostrará meses que no están disponibles dentro del rango de fecha mínima y máxima. Voy a demostrar este problema con las siguientes imágenes:
Cuando estoy en el minDate:
Cuando estoy entre los límites de fecha:
Cuando estoy en el maxDate:
Los meses no disponibles (en este caso abril y junio) actúan como valores mínimos y máximos en esta situación, por lo que desde abril, DatePicker se disparará hasta el 15 de mayo o cuando intente deslizarse hasta junio, el DatePicker se moverá al 22 de mayo. .
¿Es posible mantener esos meses (no disponibles) ocultos a la vista, por lo que en este caso de prueba, la única parte seleccionable sería la fecha? También teniendo en cuenta que, con un intervalo entre, por ejemplo, el 29 de mayo y el 5 de junio, junio tiene que aparecer en la lista.
Solucioné ese problema restableciendo la hora actual a la medianoche:
Calendar date = Calendar.getInstance();
// reset hour, minutes, seconds and millis
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
datePicker.setMaxDate(date.getTimeInMillis());