我有一个简单的问题,但经过一段时间的搜索,我还没有找到答案。在 DatePicker 中,是否可以将月份更改为整数而不是字符串?例如:{1,2,3..} 不是 {jan,feb,mar...}
编辑:
尽管@kaneda 的解决方案似乎有效,但至少在android 3.0 中方法和属性不一样。我正在使用的代码是这样的:
public DatePickerCustom(Context context, AttributeSet attrs) {
super(context, attrs);
Field[] fields = DatePicker.class.getDeclaredFields();
try {
for (Field field : fields) {
field.setAccessible(true);
if (TextUtils.equals(field.getName(), "mMonthSpinner")) {
Method m = field.getType().getDeclaredMethod("setDisplayedValues", String[].class);
m.setAccessible(true);
String[] s = new String[] {"01","02","03","04","05","06","07","08","09","10","11","12"};
Object[] params = new Object[1];
params[0] = s;
m.invoke(field.get(this), params);
break;
}
}
}
catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
编辑2:
最好的解决方案是创建一个自定义 DatePicker(遵循@kaneda 的第一个建议),它将始终在没有兼容性问题的情况下工作,并且不会通过反射进行中继。
使用了来自 android的date_picker.xml和 @kaneda 发布的 DatePicker.java。此外,我使用了自定义 NumberPicker(因为 DatePicker 小部件使用的是 android 内部的)。对于 NumberPicker 小部件,我点击了这个链接。
在 CustomDatePicker 中,我对该函数进行了注释getShortMonths()
并将月份范围设置为mMonthPicker.setRange(1, NUMBER_OF_MONTHS);
.