一、优点

1.可扩展性很强

2.三级联动

3.单项选择

4.条件 选择

二、项目下载地址demo及文档传送门在这哦

三、效果图

                    

                        

四、使用步骤

1.添加Jcenter仓库 Gradle依赖:

compile 'com.contrarywind:Android-PickerView:3.2.7'

2.在Activity中添加如下代码:

默认的时间选择器

//时间选择器
TimePickerView pvTime = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {@Overridepublic void onTimeSelect(Date date,View v) {//选中事件回调tvTime.setText(getTime(date));}}).build();pvTime.setDate(Calendar.getInstance());//注:根据需求来决定是否使用该方法(一般是精确到秒的情况),此项可以在弹出选择器的时候重新设置当前时间,避免在初始化之后由于时间已经设定,导致选中时间与当前时间不匹配的问题。pvTime.show();

例子  选择出生年月日

 private void initTimePicker1() {//选择出生年月日//控制时间范围(如果不设置范围,则使用默认时间1900-2100年,此段代码可注释)//因为系统Calendar的月份是从0-11的,所以如果是调用Calendar的set方法来设置时间,月份的范围也要是从0-11Date curDate = new Date(System.currentTimeMillis());//获取当前时间SimpleDateFormat formatter_year = new SimpleDateFormat("yyyy ");String year_str = formatter_year.format(curDate);int year_int = (int) Double.parseDouble(year_str);SimpleDateFormat formatter_mouth = new SimpleDateFormat("MM ");String mouth_str = formatter_mouth.format(curDate);int mouth_int = (int) Double.parseDouble(mouth_str);SimpleDateFormat formatter_day = new SimpleDateFormat("dd ");String day_str = formatter_day.format(curDate);int day_int = (int) Double.parseDouble(day_str);Calendar selectedDate = Calendar.getInstance();//系统当前时间Calendar startDate = Calendar.getInstance();startDate.set(1900, 0, 1);Calendar endDate = Calendar.getInstance();endDate.set(year_int, mouth_int - 1, day_int);//时间选择器pvTime1 = new TimePickerView.Builder(this, new TimePickerView.OnTimeSelectListener() {@Overridepublic void onTimeSelect(Date date, View v) {//选中事件回调// 这里回调过来的v,就是show()方法里面所添加的 View 参数,如果show的时候没有添加参数,v则为null/*btn_Time.setText(getTime(date));*/textview1.setText(getTime(date));}}).setType(new boolean[]{true, true, true, false, false, false}) //年月日时分秒 的显示与否,不设置则默认全部显示.setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒.isCenterLabel(false).setDividerColor(Color.RED).setTextColorCenter(Color.RED)//设置选中项的颜色.setTextColorOut(Color.BLUE)//设置没有被选中项的颜色.setContentSize(21).setDate(selectedDate).setLineSpacingMultiplier(1.2f).setTextXOffset(-10, 0,10, 0, 0, 0)//设置X轴倾斜角度[ -90 , 90°].setRangDate(startDate, endDate)
//                .setBackgroundId(0x00FFFFFF) //设置外部遮罩颜色.setDecorView(null).build();}private String getTime(Date date) {//可根据需要自行截取数据显示
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");return format.format(date);}

自定义布局

private void initCustomOptionPicker() {//条件选择器初始化,自定义布局/*** @description** 注意事项:* 自定义布局中,id为 optionspicker 或者 timepicker 的布局以及其子控件必须要有,否则会报空指针。* 具体可参考demo 里面的两个自定义layout布局。*/pvCustomOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {@Overridepublic void onOptionsSelect(int options1, int option2, int options3, View v) {//返回的分别是三个级别的选中位置String tx = cardItem.get(options1).getPickerViewText();btn_CustomOptions.setText(tx);}}).setLayoutRes(R.layout.pickerview_custom_options, new CustomListener() {@Overridepublic void customLayout(View v) {final TextView tvSubmit = (TextView) v.findViewById(R.id.tv_finish);final TextView tvAdd = (TextView) v.findViewById(R.id.tv_add);ImageView ivCancel = (ImageView) v.findViewById(R.id.iv_cancel);tvSubmit.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {pvCustomOptions.returnData();pvCustomOptions.dismiss();}});ivCancel.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {pvCustomOptions.dismiss();}});tvAdd.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {getCardData();pvCustomOptions.setPicker(cardItem);}});}}).isDialog(true).build();pvCustomOptions.setPicker(cardItem);//添加数据}

三级联动

pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {@Overridepublic void onOptionsSelect(int options1, int options2, int options3, View v) {//返回的分别是三个级别的选中位置String tx = options1Items.get(options1).getPickerViewText()+ options2Items.get(options1).get(options2)/* + options3Items.get(options1).get(options2).get(options3).getPickerViewText()*/;btn_Options.setText(tx);}
}).setTitleText("城市选择").setContentTextSize(20)//设置滚轮文字大小.setDividerColor(Color.LTGRAY)//设置分割线的颜色.setSelectOptions(0, 1)//默认选中项.setBgColor(Color.BLACK).setTitleBgColor(Color.DKGRAY).setTitleColor(Color.LTGRAY).setCancelColor(Color.YELLOW).setSubmitColor(Color.YELLOW).setTextColorCenter(Color.LTGRAY).isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。.setLabels("省", "市", "区").setBackgroundId(0x66000000) //设置外部遮罩颜色.build();//pvOptions.setSelectOptions(1,1);
/*pvOptions.setPicker(options1Items);//一级选择器*/
pvOptions.setPicker(options1Items, options2Items);//二级选择器
/*pvOptions.setPicker(options1Items, options2Items,options3Items);//三级选择器*/

时间选择器的属性大全

.setType(new boolean[]{true, true, true, false, false, false}) //年月日时分秒 的显示与否,不设置则默认全部显示
.setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒
.setSubmitText("确定")//确定按钮文字
.setCancelText("取消")//取消按钮文字
.setTitleText("请选择")//标题
.setSubCalSize(18)//确定和取消文字大小
.setTitleSize(20)//标题文字大小
.setTitleColor(Color.GREEN)//标题文字颜色
.setSubmitColor(Color.GREEN)//确定按钮文字颜色
.setCancelColor(Color.GREEN)//取消按钮文字颜色
.setTitleBgColor(0xFF333333)//标题背景颜色 Night mode
.setBgColor(0xFF000000)//滚轮背景颜色 Night mode
.setOutSideCancelable(false)//点击屏幕,点在控件外部范围时,是否取消显示
.isCyclic(false)//是否循环滚动
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
.setDividerColor(Color.YELLOW)//设置分割线的颜色
.setTextColorCenter(Color.RED)//设置选中项的颜色
.setTextColorOut(Color.BLUE)//设置没有被选中项的颜色
.setContentSize(21)//滚轮文字大小
.setDate(selectedDate) 如果不设置的话,默认是系统时间*/
.setLineSpacingMultiplier(1.2f)//设置两横线之间的间隔倍数
.setTextXOffset(-10, 0, 10, 0, 0, 0)//设置X轴倾斜角度[ -90 , 90°]
.setRangDate(startDate, endDate)起始终止年月日设定
.setBackgroundId(0x00FFFFFF) //设置外部遮罩颜色
.setDecorView(null)//设置要将pickerview显示到的容器id 必须是viewgroup
.isDialog(false)//是否显示为对话框样式

更多操作,请下载demo查看哦

Android 时间选择器 PickerView,的详细使用相关推荐

  1. python tkinter 日期时间选择器,附详细可运行源码

    因为最近需要用的日期时间选择框,网上找了一圈发现大多都用不了,自己结合官方库写了一个,在这免费分享出来,供有需要的小伙伴使用. 先看效果图: 点击开始时间按钮弹出日期选择框,确定后输出到文本框中. 先 ...

  2. Android时间选择器对话框的使用

    1.适用场合 当我们需要使用时间选择器,又碍于TimePicker的使用会破坏界面的美观性时,可以考虑使用TimePickerDialog. 2.关键代码实现 public class DemoAct ...

  3. android timepicker 不可编辑,iView -- TimePicker 自定义修改时间选择器选择时间面板样式...

    期望的最终效果: 为什么要修改期望效果? 项目需要只选择小时,分钟跟秒的不需要,而官方并没有直接相关的小时组件或者是设置显示成小时或分钟或秒的时间选择器,因为自己直接修改样式. 原生js 代码,如下: ...

  4. android自定义滚轴选择器_Android自定义控件实战—滚动选择器PickerView

    手机里设置闹钟需要选择时间,那个选择时间的控件就是滚动选择器,前几天用手机刷了MIUI,发现自带的那个时间选择器效果挺好看的,于是就自己仿写了一个,权当练手.先来看效果: 效果还行吧?实现思路就是自定 ...

  5. Android自定义控件实战——滚动选择器PickerView

    转载请声明出处http://blog.csdn.net/zhongkejingwang/article/details/38513301 手机里设置闹钟需要选择时间,那个选择时间的控件就是滚动选择器, ...

  6. Android --- 进入页面时,不弹出软键盘。当 EditText 被点击时不弹出软键盘,而是调用其他选择器,比如时间选择器等

    功能需求: 1.进入页面时,不弹出软键盘 2.当 EditText 被点击时不弹出软键盘,而是调用其他选择器,比如时间选择器等 搜索百度测试: 1.百度上说用 editText.setInputTyp ...

  7. android 开发 时间选择器TimePicker的使用

    android 开发 时间选择器TimePicker的使用 android系统自带时间控件: DatePicker 日期显示控件  DatePickerDialog 日期对话框控件 TimePicke ...

  8. Android中TimePicker时间选择器的使用和获取选择的时和分

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

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

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

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

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

最新文章

  1. Python常见问题(7):Python图形用户接口 Graphic User Interface FAQ
  2. iphonex黑屏开不了机_iphonex黑屏就算强制开机也开不了,是什么原因?_杭州维修...
  3. 按汉字首字母排序(sql语句)
  4. 这个Nature推荐的代码海洋竟然有文章作者上传的所有可重现性脚本,涉及单细胞、微生物组、转录组分析、机器学习等相关
  5. Django1.7如何配置静态资源访问
  6. 为什么你觉得现在做生意这么难?
  7. Java开发全套学习!java判断字符串中是否包含中文
  8. 国产环境小卫星数据预处理及简单应用
  9. 4 拼接_3个孩子,64㎡小户型内“镶嵌”4室一厅,餐桌还能随意拼接
  10. iPhone点滴:如何判断iPhone类型
  11. 批处理bat命令快速截图
  12. 易语言窗口c_句柄取进程名,易语言进程id取窗口句柄
  13. mysql英文版怎么调中文_MySQL英文版的使用
  14. 海康8700服务器系统,海康8700安防综合管理平台安装使用指南.pdf
  15. 关于如何使用java,将Office文件转换成PDF格式
  16. 12组-选题与需求分析报告
  17. 计算机一级考试选网络题广东,广东计算机一级考试试题及答案
  18. 渗透测试-CS架构客户端
  19. windows打开虚拟键盘命令
  20. 华为云mysql端口号_远程连接华为云数据库(端口3306)

热门文章

  1. 5千万个密码的密码字典全家桶
  2. ODI Studio 11g 连接Essbase数据源
  3. 【影视APP】分享一个影视APP源码
  4. Java入门到精通全教程
  5. tableau free public免费版
  6. js实现调用摄像头拍照功能
  7. 股票基金历史数据下载接口集合
  8. python 快速排名发包_SEO快速排名发包技术及原理
  9. 论为什么需要软件工程
  10. UltraISO 软碟通注册码