Android开发之自定义DataTimePicker(日期时间选择器)

最近项目中,要求日期和时间在同一个页面同时选择,这个就需要自定义了,其实所谓的自定义只不过是把时间和日期对话框组合在一起而已。

一、基本知识

1、关于日期的几个控件:

DatePicker(日期选择控件)
TimePicker(时间选择控件)
DatePickerDialog(日期选择对话框)
TimePickerDialog(时间选择对话框)
AnalogClock(模拟时钟控件)
DigitalClock(数字时钟控件)

2、相关控件介绍

DatePicker 、 TimePicker 都继承自Android.widget.FrameLayout,并且默认展示风格、与操作风格也类似。DatePicker用于展示一个日期选择控件,TimePicker用于展示一个时间选择控件。

DatePicker常用相关属性:
android:calendarViewShown:是否显示日历
android:spinnersShown:是否显示为滚动条样式(会同时显示日历和滚动条样式上边两个都不设置)
android:startYear:设置可选开始年份。
android:endYear:设置可选结束年份。
android:maxDate:设置可选最大日期,以mm/dd/yyyy格式设置。
android:minDate:设置可选最小日期,以mm/dd/yyyy格式设置。
DatePicker的方法而言,除了常用获取属性的setter、getter方法之外,还需要特别注意一个初始化的方法init()方法,用于做DatePicker控件的初始化,并且设置日期被修改后,回调的响应事件。此方法的签名如下:
init(int year, int monthOfYear, int dayOfMonth, DatePicker.OnDateChangedListener onDateChangedListener)
从上面的init()方法可以看到,DatePicker被修改时响应的事件是DatePicker.OnDateChangedListener 事件,如果要响应此事件,需要实现其中的onDateChanged()方法,其中参数从签名即可了解意思,这里不再累述。
onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
作为一个时间选择控件来说,TimePicker需要与时间相关的getter、setter方法之外,还需要有时间被修改够,回调的响应事件。

TimePicker常用方法有如下几个:
is24HourView():判断是否为24小时制。
setIs24HourView():设置是否为24小时制显示。
getCurrentXxx():获取当前时间。
setCurrentXxx():设置当前时间。
setOnTimeChangedListener():设置时间被修改的回调方法。
TimePicker控件被修改的回调方法,通过setOnTimeChangedListener()方法设置,其传递一个 TimePicker.OnTimeChangedListener 接口,需要实现其中的onTimeChanged()方法。

二、实现步骤

首先,对话框的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:orientation="vertical"><DatePicker
        android:id="@+id/data_picker"android:layout_width="wrap_content"android:layout_height="wrap_content"android:calendarViewShown="false" /><TimePicker
        android:id="@+id/timer_picker"android:layout_width="wrap_content"android:layout_height="wrap_content" />
</LinearLayout>

然后,我封装了一个工具类:

public static void getDateTime(Context mContext, final TextView textView) {View date_time_picker = View.inflate(mContext, R.layout.date_time_picker, null);final DatePicker datePicker = (DatePicker) date_time_picker.findViewById(R.id.data_picker);final TimePicker timePicker = (TimePicker) date_time_picker.findViewById(R.id.timer_picker);timePicker.setIs24HourView(true);//   Build   DateTimeDialogAlertDialog.Builder builder = new AlertDialog.Builder(mContext);builder.setView(date_time_picker);builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {String dateStr = datePicker.getYear() + "-" + datePicker.getMonth() + "-" + datePicker.getDayOfMonth();int currentMinute = timePicker.getCurrentMinute();String curMinute = "";if (currentMinute < 10) {curMinute = "0" + currentMinute;} else {curMinute = String.valueOf(currentMinute);}String timeStr = timePicker.getCurrentHour() + ":" + curMinute;textView.setText(dateStr + "  " + timeStr);}});builder.show();}

最后,直接调用就好了

DateUtil.getDateTime(this, tv);

Android开发之自定义DataTimePicker(日期时间选择器)相关推荐

  1. Android底部日期控件,Android开发中实现IOS风格底部选择器(支持时间 日期 自定义)...

    本文Github代码链接 先上图吧: 这是笔者最近一个项目一直再用的一个选择器库,自己也在其中做了修改,并决定持续维护下去. 先看使用方法: 日期选择: private void showDateDi ...

  2. 《Android开发卷——自定义日期选择器(二)》

    (小米手机) (中兴手机) 在上一篇中,我介绍了一般公司都会自定义时间日期选择器,并结合自己所做的项目给大家参考. 工作实录之<Android开发卷--自定义日期选择器(一)>链接:htt ...

  3. android日期选择区间控件_Android日期时间选择器实现以及自定义大小

    本文主要讲两个内容:1.如何将DatePicker和TimePicker放在一个dialog里面:2.改变他们的宽度: 问题1:其实现思路就是自定义一个Dialog,然后往里面同时放入DatePick ...

  4. 《Android开发卷——自定义日期选择器(三)》

                 继 <Android开发卷--自定义日期选择器(一)>:http://blog.csdn.net/chillax_li/article/details/19047 ...

  5. Android中实现日期时间选择器(DatePicker和TimePicker)

    利用Android应用框架提供的DatePicker(日期选择器)和TimePicker(时间选择器),实现日期时间选择器. Dialog的Content布局文件(date_time_dialog.x ...

  6. android edittext获取 time值,在Android EditText中实现日期时间选择器(DatePicker和TimePicker)...

    利用Android应用框架提供的DatePicker(日期选择器)和TimePicker(时间选择器),实现日期时间选择器. Dialog的Content布局文件(date_time_dialog.x ...

  7. 微信小程序----日期时间选择器(自定义精确到分秒或时段)

    声明 bug:由于此篇博客是在bindcolumnchange事件中做的值的改变处理,因此会出现当你选择时,没有点击确定,直接取消返回后,会发现选择框的值依然改变. 造成原因:这一点就是由于在bind ...

  8. 微信小程序----日期时间选择器(自定义精确到分秒或时段)(MUI日期时间)

    效果体验二维码(外联图片失效了) 如果文章对你有帮助的话,请打开微信扫一下二维码,点击一下广告,支持一下作者!谢谢! 声明 bug:由于此篇博客是在bindcolumnchange事件中做的值的改变处 ...

  9. 选择对话框 android_Android日期时间选择器对话框

    选择对话框 android Android Date Time picker are used a lot in android apps. In this tutorial we'll demons ...

  10. DateTimePicker 日期时间选择器报错 Cannot read property ‘getHours‘ of undefined, 无法选中`[__ob_: observer__]`时做判断

    我在一次开发中遇到了这个情况:使用DateTimePicker 日期时间选择器,出现无法选中, 报错 Cannot read property 'getHours' of undefined, 这个原 ...

最新文章

  1. Linux控制删除深度!除find ./ -maxdepth 1 -name *.c | xargs rm -rf
  2. Python3 定时访问网页
  3. memcache-session-manager(flexjson)
  4. WNEWS 专题系统
  5. 如何右键文件夹以Sublime 打开
  6. FreeBSD系统忘记root密码
  7. php的foreach什么意思,php中foreach的用法是什么,php foreach as
  8. oracle dataguard详解,Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向
  9. IronPython for ASP.NET 部署注意事项
  10. [招聘]期待您的加盟,与博客园一起成长
  11. 用C++实现定积分运算
  12. linux创建2g文件,创建一个2G的文件(Linux命令dd)
  13. doc 问卷调查模板表_Word制作电子版问卷调查模板表「教你方框内打钩」
  14. 【python爬虫】Python爬取下载巨潮网指定公司的年报pdf
  15. 后台模拟页面登陆_微信直播小程序后台,微信朋友圈可直达小程序直播了
  16. SSM 电影后台管理项目
  17. java web之javascript(js)解析
  18. 计算机用的云电脑,玩家怎么才能将家用电脑变成云电脑?
  19. 修改linux服务器nls_lang,Oracle下服务端字符集修改
  20. Redis——Redis_Jedis实践

热门文章

  1. html div边框添加文字,css通过text-shadow给文字加边框!
  2. 《软件随想录》读书笔记
  3. 使用 Sublime 比较文档差异
  4. dejavu歌曲识别介绍
  5. linux环境蝉道搭建及关联钉钉
  6. 案例▍Python实战 爬取万条票房数据分析2019春节档电影状况
  7. word表格边框消失怎么办_为什么我的word表格没了边框 - 卡饭网
  8. STM32:I2S驱动WM8978
  9. 各国家分析之加拿大安道尔
  10. 发动机冒黑烟_汽车发动机冒黑烟什么原因,汽车发动机都可能发生哪些故障?...