下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

如何实现Android日期时间选择器以及自定义大小的设置

作者:课课家教育     来源: http://www.kokojia.com点击数:2527发布时间: 2019-03-29 15:14:32

标签: androiddatedatepickertimepicker安卓

     日期选择插件Datepicker是一个配置灵活的插件,我们可以自定义其展示方式,包括日期格式、语言、限制选择日期范围、添加相关按钮以及其它导航等。而DateTimePicker控件,控件一般用于让用户可以从日期列表中选择单个值。运行时,单击控件边上的下拉箭头,会显示为两个部分:一个下拉列表,一个用于选择日期的。

如何实现Android日期时间选择器以及自定义大小的设置_androiddate_datepicker_安卓_课课家

  本文主要讲两个内容,一是如何将DatePicker和TimePicker放在一个dialog里面;二是改变他们的宽度;

  问题1:其实现思路就是自定义一个Dialog,然后往里面同时放入DatePicker和TimePicker,直接贴代码:

  date_time_picker.XML:

  Xml代码

  然后在需要显示日期时间选择器的地方(一般是一个onClickListener中)实例化dialog:

  DemoActivity.java

  Java代码

  这样就可以实现日期时间选择器了,这里就有点layout上的小问题,你是需要datepicker和timepicker水平排列还是竖直排列,竖直排列是没问题的:下面给出两个数值排列的效果图

  (1)DatePicker控件中设置Android:calendarViewShown="false" 时的效果图:

  (2)(1)DatePicker控件中设置android:spinnersShown="false" 时的效果图:

  当然,如果你android:calendarViewShown和android:spinnersShown都不设置为false的话,会同时显示日历和滚动条样式,我想一般不会有人想要这样的视图吧。

  水平排列是有问题的,那就是屏幕太挤,两个控件显示不全,看看效果图:

 

  可是有人就是有水平排列的需求怎么办?这就是本文要讲的第二个问题:改变datepicker和timepicker的宽度。

  网上找了很久,没有发现很有效的方法,说是这两个控件的子元素的宽度是不能自定义的,实际上把控件的所有属性看了一遍,也确实没有发现相关的属性;有人是通过自定义DatePicker和TimePicker来实现的,找了个demo,确实是实现了,不过已经相当于是自己写了一个插件了,我嫌麻烦,加之稳定性方面的考虑,没有去用,不过我会在最后把这个demo的src带上,有需要的人可以自己下载来研究。难道真不能改宽度吗?突然想到我是不是能从代码中的datePicker对象一步步往下找到其child,直接改child的宽度呢,于是debug,果然通过这种方式成功改变了宽度值,代码如下,只要在DemoActivity.java中增加一块专门用于实现改宽度的代码就行:

  DemoActivity.java:

  Java代码

  通过这种方式实现的效果图如下:

  其实这种方法也有问题:我的手机是1080P(5.5寸)的屏,显示效果是这样,如果屏幕小点,分辨率更低的屏呢,很可能屏幕宽度不够显示,当然你可以修改一下上面代码的逻辑,根据屏幕大小来动态设置控件的宽度值,而不是设成定值,具体的这些细节按自己的需求来做吧,我这里只是想记录一下自己发现的这种改变datepicker和timepicker宽度的方法,至于是否实用,我不负责,我只当是学习一下android。不过我的项目里最终没有用这个方案,最终选择了垂直排列的日历格式那个方案。

  最后附上别人实现的自定义DatePicker网址案例:

      TimePicker(MyPicker)图展:

     本文图文详解了实现Android日期时间选择器以及自定义大小的设置,主要是运用了代码的形式,主要是实现自定义一个Dialog,然后往里面同时放入DatePicker和TimePicker,然后代码与图片一起展示。

赞(23)
踩(1)
分享到:
华为认证网络工程师 HCIE直播课视频教程