Android DatePicker月为整数

Android DatePicker月为整数,第1张

概述我有一个简单的问题,但搜索了一会儿后仍找不到答案.在DatePicker中,可以更改要显示为整数而不是字符串的月份吗?例如:{1,2,3..}不是{jan,feb,mar…}编辑:尽管@kaneda的解决方案似乎有效,但在android3.0中,至少方法和属性都不相同.我正在使用的代码是这样的:publicDatePickerCus

我有一个简单的问题,但搜索了一会儿后仍找不到答案.在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月为整数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1093224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存