如何只在日期选取器在安卓显示年 [英] How to display year only in date picker in android
问题描述
谁能告诉如何只在日期选取器在Android中显示年
Can anybody tell how to display year only in date picker in android
感谢
推荐答案
您也可以使用一些简单的反射来隐藏日期和月份 NumberPicker
S的的DatePicker
小部件。请注意,这可能会停止工作,如果谷歌决定重新命名的成员字段名。此外,使用 Android的时候,当然这种做法是有道理的:datePickerMode =微调
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;
}
}
更新:新增code,说明如何使这种方法的工作与Android棒棒堂5.0(API 21 +)
Update: Added code illustrating how to make this approach work with Android 'Lollipop' 5.0 (API 21+).
免责声明:我不能强调不够,这是可能会停止与任何框架的更新工作(因为它没有当的Android 3.0中首次引入,并再次与Android 5.0)哈克的解决方案。
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).
这篇关于如何只在日期选取器在安卓显示年的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!