Android 日期选择框 简洁常用
程序员文章站
2022-03-21 17:06:49
效果 核心代码 >方法 /** * @description 选择日期弹出框 * @param listener 选择日期确定后执行的接口 * @param curDate 当前显示的日期 * @return * @author wqy * @time 2020-1-6 14:23 */ publi ......
-
效果
-
核心代码
>方法
/** * @description 选择日期弹出框 * @param listener 选择日期确定后执行的接口 * @param curdate 当前显示的日期 * @return * @author wqy * @time 2020-1-6 14:23 */ public void showdatepickdialog(datepickerdialog.ondatesetlistener listener, string curdate) { calendar calendar = calendar.getinstance(); int year = 0,month = 0,day = 0; try { year =integer.parseint(curdate.substring(0,curdate.indexof("-"))) ; month =integer.parseint(curdate.substring(curdate.indexof("-")+1,curdate.lastindexof("-")))-1 ; day =integer.parseint(curdate.substring(curdate.lastindexof("-")+1,curdate.length())) ; } catch (exception e) { e.printstacktrace(); year = calendar.get(calendar.year); month = calendar.get(calendar.month); day=calendar.get(calendar.day_of_month); } datepickerdialog datepickerdialog = new datepickerdialog(this,datepickerdialog.theme_holo_light,listener, year,month , day); datepickerdialog.show(); }
>调用
showdatepickdialog(new datepickerdialog.ondatesetlistener() { @override public void ondateset(datepicker datepicker, int year, int month, int day) { etdate.settext(year + "-" + (month + 1) + "-" + day); } }, etdate.gettext().tostring());
说明:etdate为一个输入框edittext 显示当wujiaox前选择的日期,也可使用 textview 。
⭐使用edittext 时需注意:将edittext touch 时弹出输入框的效果禁用掉,所以尽量使用 ontouch 来实现弹出,不用 onclick 事件
@override public boolean ontouch(view view, motionevent motionevent) { if (motionevent.getaction()==motionevent.action_down){ hideinput();//隐藏输入框 switch (view.getid()) { case r.id.etdate: showdatepickdialog(new datepickerdialog.ondatesetlistener() { @override public void ondateset(datepicker datepicker, int year, int month, int day) { //选择日期过后执行的事件 etdate.settext(year + "-" + (month + 1) + "-" + day); } }, etdate.gettext().tostring()); break; } } return false; }
>hideinput方法 有可能不是当前输入框调出的输入框,在点击之前有输入框也要隐藏掉
/** * 隐藏键盘 */ protected void hideinput() { inputmethodmanager imm = (inputmethodmanager) getsystemservice(input_method_service); view v = getwindow().peekdecorview(); if (null != v) { imm.hidesoftinputfromwindow(v.getwindowtoken(), 0); } }