最近项目里需要对时间限制的时间选择器,当然实现这种功能完全可以自定义一个,网上也有很多自定义的 时间选择器,在原来的基础上根据自己的需要修改一下就可以了。我才用了android 自带的TimePicker,和 DatePicker 以及 dialog;

先来看看原理:

1, DatePicker :

DatePicker 相对 TimePicker 还好点, 因为它自带了  setMinDate()和setMaxDate()两个方法, 我们直接就可以通过这两个方法对datepicker进行范围的设定:

Calendar minCalendar = Calendar.getInstance();

minCalendar.set(Calendar.DAY_OF_MONTH, minCalendar.get(Calendar.DAY_OF_MONTH)+delayDays);

datePicker.setMinDate(minCalendar.getTimeInMillis());//添加范围的最小值

Calendar maxCalendar = Calendar.getInstance();

maxCalendar.add(Calendar.YEAR, 2);//设置年的范围(今年是2016,第二个参数是2则,datepicker范围为2016-2018)

datePicker.setMaxDate(maxCalendar.getTimeInMillis());//添加范围的最小值

Calendar curCalendar = Calendar.getInstance();

datePicker.init(curCalendar.get(Calendar.YEAR),

curCalendar.get(Calendar.MONTH),

curCalendar.get(Calendar.DAY_OF_MONTH), null);

2,Timepicker:

timepicker 相对于 datepicker 来说就难搞一点,因为它对应的类中功能相当无力;所以在做这个功能的时候datepicker解决后,卡在timepicker这一天;后来总结下来,不得不承认自己的java基础实在是太差;因为在这里我们要用到的一个知识点是:反射。

我们来看一看google源码的内容:

a,先看一下 datepicker 里面的:

在DatePicker类里定义了这三个属性,我们可以猜到datepicker里的数据显示就是这三个NumberPicker对象的属性实现的功能;

在datepicker里的setMinDate()和setMaxDate()使用了numberPicker类中的setMinValue和setMaxValue()方法;至此,我想思路也差不多了

b,然后看看 timepicker 里面的:

一样的类型,那么只要我们能获得 NumberPicker 的两个对象:mHourSpinner 和 mMinuteSpinner , 就可以对Timepicker 进行时间范围的设定了:

try {//反射

Field hourSpinnerField = timePicker.getClass().getDeclaredField("mHourSpinner");

hourSpinnerField.setAccessible(true);

NumberPicker hourSpinner = (NumberPicker) hourSpinnerField.get(timePicker);

hourSpinner.setMinValue(minHour);

hourSpinner.setMaxValue(maxHour);

} catch (Exception e) {

e.printStackTrace();

}

==========================  我是分割线 ======================

因为API21以后的TimePicker类有所改变,所以再用以上反射方法是获取不到mHourSpinner,和mMinuteSpinner的。所以在Android L 或之后版本的手机是设置不了时间范围的。所以该怎么办,没办法,最好自定义一个好了。百度了一下,有位网友自定义了一个PickerView,在这基础上,我又做了些改动。可以根据当前时间动态设置可选时间范围。

具体源码如下地址:

http://download.csdn.net/detail/qq_33363534/9591234

是的,就这么简单,然而折磨了我一天多。然而我自己还是太水;

感谢这位仁兄:http://www.bkjia.com/Androidjc/884699.html

android timepicker 时间上限,利用Android TimePicker 和 DatePicker 实现对时间的限制相关推荐

  1. 怎么用Android做登录界面,利用Android怎么制作一个APP登录界面

    利用Android怎么制作一个APP登录界面 发布时间:2020-12-02 17:09:10 来源:亿速云 阅读:79 作者:Leah 这期内容当中小编将会给大家带来有关利用Android怎么制作一 ...

  2. Android开发基础:利用 Android Studio开发看美女应用(4)

    利用 Android Studio开发看美女应用 今天我们会利用 Android Studio开发一个简单的看美女应用,通过它查看互联网上的美女图片.通过本篇文章,你将会学到Android应用简单开发 ...

  3. python例题求乘客等车时间_利用Python数据处理进行公交车到站时间预测(一)

    1.数据格式 id  int  id编号 type  int   41表示站间数据,42中间站进出数据 43始末站进出数据 route_id int  线路ID号,10454,10069,120881 ...

  4. 个人开发总结分享:Android学习及如何利用android来赚钱

    先说说本人的情况,09年底开始学习手机开发,先从Brew到Mobile再到Android,android是今年过年回来才算真正开始学的,一边学习一边做原先Brew项目到android的移植,5月中旬的 ...

  5. android 汉字转字节,利用android源码实现获取汉字的拼音(修复BUG)

    本帖最后由 nightwish12075 于 2014-12-31 11:32 编辑 帖子的上一篇留下的BUG,本帖继续解析 http://www.52pojie.cn/thread-316493-1 ...

  6. android 蓝牙耳机按钮,如何利用android从蓝牙耳机中捕获关键事件_bluetooth_开发99编程知识库...

    将广播侦听器添加到 MEDIA_BUTTON: 你应该在应用程序( 不在清单文件中) 中注册你的广播接收器. 否则,谷歌音乐播放器将捕捉你的广播和船上. 你的IntentFilter 优先级应该高于其 ...

  7. Android 开发--利用android studio 制作简单文字打怪升级游戏(伪地牢类)1.开始

    本人目前是大三考研党,之前有学过一些杂七杂八的知识,但是没有办法利用这些知识制作一些真正有用的东西出来.后来自学了android开发,学会使用了android studio,终于决定利用android ...

  8. android timepicker分割线颜色,关于Android的TimePicker和DatePicker一些简单的使用问题

    前几天有个需求需要实现这样的一个时间选择器.我没有用"基友"网站上的WheelView 我直接用的是Android系统提供的组件TimePicker和DatePicker. 需求图 ...

  9. 利用Android Studio快速搭建App

    大家好,我是烤鸭: 给大家分享一个简单的用Android Studio快速搭建app 工具: Android Studio 64位 专业版 插件: Datepicker Timepicker okht ...

  10. android在特定时间,如何在Android Oreo的特定时间在Android上发出通知?

    我正在寻找一种在"设置"中创建首选项的方法,以便在Android应用中的特定时间(由用户在设置中设置)发送通知.我看过像this这样的不同线程,但是这在Android Oreo中不 ...

最新文章

  1. ollvm 编译器优化的bug
  2. 手动更改oracle监听,详解Oracle数据库手动注册监听的方法
  3. 【设计模式】前端必懂EventEmitter
  4. 检查Red Hat JBoss BRMS部署架构的规则和事件(第一部分)
  5. linux mysql异机备份_Linux环境下oracle数据库Rman备份异机恢复
  6. 怎样做好域名防红_微信域名防拦截的工作
  7. 因果推断笔记——自整理因果推断理论解读(七)
  8. 唯大英雄能真本色——leo推荐程序员小说《敏捷无敌》
  9. 11 绑定方法与非绑定方法
  10. linux全局启动tomcat,linux下启动tomcat服务
  11. ERP和SAP是什么意思
  12. 用照片进行三维模型重建
  13. 项目管理与SSM框架——Spring
  14. CSS一篇文章搞懂系列6:超全的字体篇与背景设置内容,花里胡哨起来
  15. 真相(truth)最可怕的敌人不是谎言(lie),而是神话(myth)
  16. 人民币升值和贬值的影响
  17. 熊猫python小课靠谱吗_疫情之后,企业复工,新的机遇在哪里?
  18. 趣图 | 分享几个薅羊毛的福利哦~
  19. Android 开发新技术:Jetpack Compose当仁不让
  20. 双面铣组合机床设计(全套优秀毕业设计含CAD图纸、说明书)

热门文章

  1. 表达式引擎Aviator基本介绍及使用以及基于Aviator的规则引擎(附代码详细介绍)
  2. 《代码整洁之道》:整洁代码有意义的命名
  3. 部署 - 前端部署https服务,并配置安全证书
  4. 晶圆涨、封测涨、芯片涨、材料涨…涨价的野火烧到哪了?
  5. 计算机浏览器,有哪些好用的PC浏览器?
  6. 什么是消息队列(Message queue)
  7. VMWare Fusion 导入已有的虚拟机
  8. 要如何给PDF解密?这几个操作简单的方法可以试试
  9. js 实现选择文件存放路径
  10. 怎么使用计算机英语段落,怎么在电脑word文档中添加英文朗读功能