Can anybody tell how to display year only in date picker in android
Thanks
You could also use some simple reflection to hide the day and month NumberPicker
s of a DatePicker
widget. Do note that this may stop working if Google decides to rename the member field names. Also, this approach of course makes sense when using android:datePickerMode="spinner".
// inflate DatePicker, or e.g. get it from a DatePickerDialog:
DatePicker datepicker = ...
// pre-Honeycomb fields:
findAndHideField(datepicker, "mDayPicker");
findAndHideField(datepicker, "mMonthPicker");
// Honeycomb(+) fields:
findAndHideField(datepicker, "mDaySpinner");
findAndHideField(datepicker, "mMonthSpinner");
// Lollipop(+) fields (wrapped in a delegate):
final Object mDatePickerDelegate = findFieldInstance(picker, "mDelegate");
findAndHideField(mDatePickerDelegate, "mDaySpinner");
findAndHideField(mDatePickerDelegate, "mMonthSpinner");
/** find a member field by given name and hide it */
private static void findAndHideField(Object object, String name) {
try {
final Field field = object.getClass().getDeclaredField(name);
field.setAccessible(true);
final View fieldInstance = (View) field.get(object);
fieldInstance.setVisibility(View.GONE);
} catch (Exception e) {
e.printStackTrace();
}
}
/* find a member field by given name and return its instance value */
private static Object findFieldInstance(DatePicker datepicker, String name) {
try {
final Field field = DatePicker.class.getDeclaredField(name);
field.setAccessible(true);
return field.get(datepicker);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Update: Added code illustrating how to make this approach work with Android 'Lollipop' 5.0 (API 21+).
Disclaimer: I cannot stress enough that this is hacky solution that may stop working with any framework update (as it did when Android 3.0 was first introduced, and again with Android 5.0).