Ocultar el campo Año en Android DatePicker?

Estoy utilizando un DatePicker básico y estoy tratando de averiguar cómo ocultar el campo Año en el DatePickerDialog para que sólo el mes y el día son visibles. No me importa que el código subyacente para el año todavía estaría allí, sólo me gustaría ocultar el campo de año en el cuadro de diálogo. Usted sabe con algo como:

((View) myYear).setVisibility(View.GONE); 

Que sé que no funciona porque myYear es un int no una vista, pero algo a lo largo de esas líneas. ¿Es posible?

Una manera super fácil que encontré para implementar un DatePicker es llamarla en xml:

  <DatePicker android:id="@+id/thePicker" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

Y luego ocultar cualquier campo que desee (en este caso el año) en java:

  picker = (DatePicker) findViewById(R.id.thePicker); try { Field f[] = picker.getClass().getDeclaredFields(); for (Field field : f) { if (field.getName().equals("mYearPicker")) { field.setAccessible(true); Object yearPicker = new Object(); yearPicker = field.get(picker); ((View) yearPicker).setVisibility(View.GONE); } } } catch (SecurityException e) { Log.d("ERROR", e.getMessage()); } catch (IllegalArgumentException e) { Log.d("ERROR", e.getMessage()); } catch (IllegalAccessException e) { Log.d("ERROR", e.getMessage()); } 

Tenga mucho cuidado con esta solución. Está utilizando la reflexión para acceder a un campo y cambiar la visibilidad. ¡Esto no funcionará con Android 5.0! Google ha cambiado la implementación de TimePicker y DatePicker y las clases ya no exponen ningún campo appart del delegado.

Todavía no sé la solución para Android 5.0 +. Te avisaré en cuanto haya encontrado algo interesante.

Como idea, puedes usar la versión Build.VERSION.SDK_INT para comprobar la versión de Android y luego intentar acceder al DatePickerSpinnerDelegate con reflexion y establecer el campo que deseas.

Una vez más, esta no es la solución ideal, ya que Google es libre de cambiar esto una y otra vez …

Fácil manera de deshabilitar el campo Año en el selector de fecha

 DatePicker dp = findDatePicker((ViewGroup) dialog.getWindow().getDecorView()); if(dp != null) { ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(2).setEnabled(false); ((ViewGroup) ((ViewGroup) dp.getChildAt(0)).getChildAt(0)).getChildAt(2).setAlpha(0.4f); } 

Si desea eliminar el campo del año sólo setvisibility de la vista de resultado a View.GONE como a continuación

 dp.getChildAt(0)).getChildAt(0)).getChildAt(2).setVisibility(View.GONE) private DatePicker findDatePicker(ViewGroup group) { if (group != null) { for (int i = 0, j = group.getChildCount(); i < j; i++) { View child = group.getChildAt(i); if (child instanceof DatePicker) { return (DatePicker) child; } else if (child instanceof ViewGroup) { DatePicker result = findDatePicker((ViewGroup) child); if (result != null) return result; } } } return null; } 

He referido abajo el acoplamiento para la referencia Quitar año de DatePickerDialog

  • Android DatePicker mostrar el nombre del mes
  • Establecer idioma en francés en android DatePickerDialog
  • La subclase SimpleDateFormat añade 1900 al año
  • Android: Cómo obtener valores de la selección de fecha y hora
  • DateTimePicker android
  • Diseño de material Android Inline Datepicker issue
  • Uso de DatePicker sin selector de día
  • DatePickerDialog incorrectamente imponiendo una fecha mínima de 1 de enero de 1970
  • Cómo cambiar el color de la fuente de datepicker?
  • Ios como el selector de fecha / hora para la plataforma android
  • Android Datepicker Fragment - ¿Cómo hacer algo cuando el usuario establece una fecha?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.