Android DatePickerDialog使用指南

大家在应用中大部分都会使用到日历
那么这篇文章就来讲一下如何使用系统自带的日历DatePickerDialog
首先调用Calendar类获取年月日

 Calendar ca = Calendar.getInstance();
      int  mYear = ca.get(Calendar.YEAR);
      int  mMonth = ca.get(Calendar.MONTH);
      int  mDay = ca.get(Calendar.DAY_OF_MONTH);

然后将获取到的年月日放进new出来的DatePickerDialog中


        DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(),
                new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                        mYear = year;
                        mMonth = month;
                        mDay = dayOfMonth;
                        final String data =  (month+1) + "月-" + dayOfMonth + "日 ";
                         }
                },
                mYear, mMonth, mDay);
        datePickerDialog.show();

这样我们就可以进行日期的选择了
但是如果我们想只进行年月的选择不进行日选择怎么办呢
代码如下

private DatePicker findDatePicker(ViewGroup group) {
        if (group != null) {
            for (int i = 0, j = group.getChildCount(); i < j; i++) {
                View child = group.getChildAt(i);
                if (child instanceof DatePicker) {
                    return (DatePicker) child;
                } else if (child instanceof ViewGroup) {
                    DatePicker result = findDatePicker((ViewGroup) child);
                    if (result != null)
                        return result;
                }
            }
        }
        return null;
    }

 //只显示年月,隐藏掉日
        DatePicker dp = findDatePicker((ViewGroup) datePickerDialog.getWindow().getDecorView());
        if (dp != null) {
            ((ViewGroup)((ViewGroup)dp.getChildAt(2)).getChildAt(2))
                    .getChildAt(2).setVisibility(View.GONE);
            //如果想隐藏掉年,将getChildAt(2)改为getChildAt(0)
        }

那么还有一个疑问如果我们想改变系统DatePickerDialog的风格怎么办呢
其实很简单
只需要在style.xml中自己定义即可
然后把定义好的样式放到DatePickerDialog构造中的第一个参数后即可
代码如下

 DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), R.style.MyDatePickerDialogTheme,
                        new DatePickerDialog.OnDateSetListener() {
                            @Override
                            public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                                mYear = year;
                                mMonth = month;
                                mDay = dayOfMonth;
                                final String data =  (month+1) + "月-" + dayOfMonth + "日 ";
                            }
                        },
                        mYear, mMonth, mDay);
                datePickerDialog.show();

好了到这里DatePickerDialog的定义就到此结束了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容