我有一个简单的问题,但搜索了一会儿后仍找不到答案.在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.@R_419_1715@(); } }
编辑2:
最好的解决方案是创建一个自定义DatePicker(遵循@kaneda的第一个建议),它将始终正常工作而不会出现兼容性问题,也不会中继反射.
使用了@kaneda发布的androID和DatePicker.java中的date_picker.xml.此外,我使用了自定义的NumberPicker(因为DatePicker小部件使用的是AndroID内部的).对于NumberPicker小部件,我遵循了link.
在CustomDatePicker中,我对函数getShortMonths()进行了注释,并将月份范围设置为mMonthPicker.setRange(1,NUMBER_OF_MONTHS);.
解决方法:
对于最佳实践方面的问题,如果您通过创建自己的布局来创建自己的自定义DatePicker,那么对于您来说,这是最正确,最方便的方法,因此,我建议您看一下它的源代码,以供参考:
Android Source Code
要么
Here
那是花哨的方式.丑陋的方式,您可以这样做:
AndroID版本< 3.0
package my.pkg;...class MyDatePicker extends DatePicker { public MyDatePicker(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(), "mMonthPicker")) { Method m = fIEld.getType().getDeclaredMethod("setRange", int.class, int.class, String[].class); m.setAccessible(true); String[] s = new String[] {"01","02","03","04","05","06","07","08","09","10","11","12"}; m.invoke(fIEld.get(this), 1, 12, s); break; } } } catch (Exception e) { System.out.println(e.getMessage()); e.@R_419_1715@(); } }}
AndroID版本> = 3.0(仅限构造函数)
public MyDatePicker(Context context, AttributeSet attrs) { super(context, attrs); FIEld[] fIElds = DatePicker.class.getDeclaredFIElds(); try { String[] s = new String[] {"01","02","03","04","05","06","07","08","09","10","11","12"}; for (FIEld fIEld : fIElds) { fIEld.setAccessible(true); if (TextUtils.equals(fIEld.getname(), "mMonthSpinner")) { NumberPicker monthPicker = (NumberPicker) fIEld.get(this); monthPicker.setdisplayedValues(s); } if (TextUtils.equals(fIEld.getname(), "mShortMonths")) { fIEld.set(this, s); } } } catch (Exception e) { System.out.println(e.getMessage()); e.@R_419_1715@(); }}
然后样板xml:
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:layout_wIDth="fill_parent" androID:layout_height="fill_parent" androID:orIEntation="vertical" > <my.pkg.MyDatePicker androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" /></linearLayout>
总结 以上是内存溢出为你收集整理的Android DatePicker月为整数全部内容,希望文章能够帮你解决Android DatePicker月为整数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)