Tenemos la mejor respuesta que descubrimos en todo internet. Esperamos que te sea útil y si deseas comentarnos alguna mejora hazlo con libertad.
Solución:
Todas las demás respuestas parecen bastante intrincadas, así que solo voy a decir lo obvio: puedes obtener el subyacente DatePicker
a partir de una DatePickerDialog
(simplemente llamando getDatePicker()
) y establezca sus límites usando:
setMinDate(long minDate)
setMaxDate(long maxDate)
Donde el argumento es el número habitual de milisegundos desde el 1 de enero de 1970 00:00:00 en la zona horaria predeterminada. Todavía tendrá que calcular estos valores, por supuesto, pero eso debería ser trivial para hacer con el Calendar
clase: simplemente tome la fecha actual y sume o reste x
años.
El lector más atento notará que los configuradores antes mencionados no estuvieron disponibles hasta el nivel 11 de la API. Si está apuntando a esa plataforma (o más nueva), entonces está listo para comenzar. Si también desea admitir, por ejemplo, dispositivos Gingerbread (Android 2.3/API nivel 9+), puede usar una versión retroportada de DatePicker
en cambio.
Establecer la fecha mínima y máxima para DatePickerDialog no es suficiente. El usuario puede hacer clic en el año y desplazarse entre años.
También debe establecer el rango de años en DatePicker de esta manera:
datePicker.setYearRange(calendar.get(Calendar.YEAR), calendar.get(Calendar.YEAR) + 1);
Aquí tienes las comentarios y valoraciones
Si estás de acuerdo, eres capaz de dejar un escrito acerca de qué te ha parecido esta sección.