android datepicker android-datepicker maxdate mindate

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());