项目回顾-DatePickerDialog 没有取消的问题

在4.x机型 没有取消按钮,即使不点击确认按钮,点击Dialog外面的部分,结果也是点击成功

5.x以上 默认的主题不一样 而且取消也没有问题,这是4.x特有的问题

这种效果肯定是不行的,下面举个可行的改变生日日期的例子

 

    @OnClick(R.id.rl_birthday)
    void changeBirthday(View v){
        final DatePickerDialog picker = new DatePickerDialog(PersonActivity.this, null,
                mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
        picker.setCancelable(true);
        picker.setCanceledOnTouchOutside(true);
        picker.setButton(DialogInterface.BUTTON_POSITIVE, "确定",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        DatePicker datePicker = picker.getDatePicker();
                        mCalendar.set(Calendar.YEAR,datePicker.getYear());
                        mCalendar.set(Calendar.MONTH,datePicker.getMonth());
                        mCalendar.set(Calendar.DAY_OF_MONTH,datePicker.getDayOfMonth());
                        updateDate();
                    }
                });
        picker.setButton(DialogInterface.BUTTON_NEGATIVE, "取消",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });
        picker.show();
    }

 

获得选中的日期里面,月份要+1

如果选中了 2016年1月1日 , 想要 20160101的这种格式,但是datePicker 的get方法返回的都是int型 直接返回的话 结果是201611,因为int型不可能有01

我没有去找正规方法,可能也没有,就用了点土办法,月和日 int转string之后,判断length的是否==1,是就再前面加个 "0",最后再拼接

年也是int,但是应该是没有必要,3位数的年份太遥远了,5位的就更不用说了

 

 

 

new DatePickerDialog 有2种构造方法  

其中一种带 int theme 参数

new DatePickerDialog(MainActivity.this,AlertDialog.THEME_HOLO_LIGHT,mDateSetListener,setyear,setmonth-1,mCalendar.get(Calendar.DAY_OF_MONTH)).show();
参考 http://bbs.csdn.net/topics/390753499

DatePickerDialog   只显示 年月

http://blog.csdn.net/OnlyOneCoder/article/details/25481505

 

posted @ 2016-10-21 15:20  demon9  阅读(596)  评论(0编辑  收藏  举报