android之datepicker使用的相关问题

datepicker,日期选择器,一种可视化较高的数据接收控件,是android自带的一个控件。

常见的应用场景:查账。yyyy年MM月dd日至yyyy年MM月dd日,根据日期区间搜索账单信息。

日期选择器实现方式有两种:一,自定义布局+alertdialog;二,datePickerDialog。


第一种方法存在一个问题,设置样式(AlertDialog.THEME_HOLO_LIGHT)时会出错,可能是跟activity的样式冲突,也可能是其他原因,这里我并没有解决,而且,你需要手动设置datepicker的值(当第二次进入dialog时,应当把第一次设置的值传进来,这样方便用户微调时间),这样逻辑多了一步,于是我干脆就用第二种方法了。

第二种方法:datePickerDialog:

 public void showDateTimePicKDialog(final TextView inputDate, int year, int month, int day) {
        ad = new DatePickerDialog(Activity.this, AlertDialog.THEME_HOLO_LIGHT,new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker datePicker, int year, int monthOfYear, int dayOfMonth) {
                String mm="";
                String dd ="";
                if(monthOfYear<=8){
                    mm="0"+(monthOfYear+1);
                }else{
                    mm=String.valueOf(monthOfYear+1);
                }
                if(dayOfMonth<=9){
                    dd= "0"+dayOfMonth;
                }else{
                    dd=String.valueOf(dayOfMonth);
                }
                pickerDateTime = String.valueOf(year)+"-"+mm+"-"+dd;
            }
        }, year,month,day);
      
        ad.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                DatePicker datePicker=ad.getDatePicker();
                int monthOfYear=datePicker.getMonth();
                int dayOfMonth=datePicker.getDayOfMonth();
                int year=datePicker.getYear();
                String mm="";
                String dd ="";
                if(monthOfYear<=8){
                    mm="0"+(monthOfYear+1);
                }else{
                    mm=String.valueOf(monthOfYear+1);
                }
                if(dayOfMonth<=9){
                    dd= "0"+dayOfMonth;
                }else{
                    dd=String.valueOf(dayOfMonth);
                }
                pickerDateTime = String.valueOf(year)+"-"+mm+"-"+dd;
                inputDate.setText(pickerDateTime);
            }
        });
        ad.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                inputDate.setText("");
            }
        });
        ad.show();}
关键代码在这里了,解释一下,

</pre><p></p><pre>
 

AlertDialog.THEME_HOLO_LIGHT风格应该是公认比较好看的风格了,一般都用这个。
注意:onDateSet()是滚动控件时自动记录日期值的,貌似在android5.0之前的机器才可以,android5.0之后以及某些机型(如努比亚512X)是没用触发这个方法的。
为了解决这个问题,用了我一点时间,它肯定有接口可以收到数据的,结果肯定是在setButton(int whichButton, CharSequence text, OnClickListener listener)这里面
处理的,数据从哪来呢?摸索了一番,发现datePickerDialog有个api叫getDatePicker(),于是很容易就知道datePicker当前的日期值了。
思路大概是这样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值