声明:本文为博主原创文章,转载请注明出处:小嵩的博客

一、介绍

Android-PickerView是一款仿iOS的PickerView控件,并封装了时间选择和选项选择这两种选择器,详细特性如下:

WheelView —— 基础控件

  • 带有3D圆弧效果。
  • 支持文字、颜色、大小设置。
  • 支持背景颜色设置。
  • 支持item的分隔线设置。
  • 支持item间距设置。
  • 支持设置是否循环。

OptionsPickerView —— 选项选择器

  • 支持一、二、三级联动数据。
  • 支持一、二、三级不联动数据。
  • 支持自定义布局。
  • 支持自定义标题栏。
  • 支持“省,市,区”等选项的单位(label)显示、隐藏和自定义。
  • 支持dialog 模式显示。
  • 支持自定义设置容器。

TimePickerView —— 时间选择器

  • 支持选择年、月、日的范围。
  • 支持年月日时分秒显示。
  • 支持设置当前默认时间。
  • 支持自定义布局。
  • 支持自定义标题栏。
  • 支持“年,月,日,时,分,秒”等选项的单位(label)显示、隐藏和自定义。
  • 支持dialog 模式显示。
  • 支持自定义设置容器。

其中,WheelView 可在XML布局中直接引用:

<com.bigkoo.pickerview.lib.WheelViewandroid:id="@+id/wv_options"android:layout_width="match_parent"android:layout_height="wrap_content" />

TimePickerView —— 时间选择器,支持年月日时分,年月日,年月,时分等格式 ,效果如下:

OptionsPickerView —— 选项选择器,支持一,二,三级选项选择,并且可以设置是否联动 ,效果如下:

二、使用

1.添加 Jcenter 仓库 Gradle 依赖:

compile 'com.contrarywind:Android-PickerView:3.x'
//注:实际引入请把"3.x"替换成具体版本号,最新版本号请以GitHub上面提供的为准

  GitHub的项目官方地址

2.在项目中添加如下代码:

//时间选择器pvTime = new TimePickerView.Builder(MainActivity.this, new TimePickerView.OnTimeSelectListener() {@Overridepublic void onTimeSelect(Date date,View v) {//选中事件回调tvTime.setText(getTime(date));}}).build();pvTime.show();

或者

//条件选择器pvOptions = new  OptionsPickerView.Builder(MainActivity.this, new OptionsPickerView.OnOptionsSelectListener() {@Overridepublic void onOptionsSelect(int options1, int option2, int options3 ,View v) {//返回的分别是三个级别的选中位置String tx = options1Items.get(options1).getPickerViewText()+ options2Items.get(options1).get(option2)+ options3Items.get(options1).get(option2).get(options3).getPickerViewText();tvOptions.setText(tx);}}).build();pvOptions.setPicker(options1Items, options2Items, options3Items);pvOptions.show(); 

  简单的两个步骤就能实现功能了,就是这么简单~ 如果默认的样式不符合你的口味,请继续往下看~

三、自定义样式

pvTime = new TimePickerView.Builder(MainActivity.this, new TimePickerView.OnTimeSelectListener() {@Overridepublic void onTimeSelect(Date date,View v) {//选中事件回调tvTime.setText(getTime(date));}}).setType(TimePickerView.Type.ALL)//默认全部显示.setCancelText("Cancel")//取消按钮文字.setSubmitText("Sure")//确认按钮文字.setContentSize(18)//滚轮文字大小.setTitleSize(20)//标题文字大小.setTitleText("Title")//标题文字.setOutSideCancelable(false)//点击屏幕,点在控件外部范围时,是否取消显示.isCyclic(true)//是否循环滚动.setTitleColor(Color.BLACK)//标题文字颜色.setSubmitColor(Color.BLUE)//确定按钮文字颜色.setCancelColor(Color.BLUE)//取消按钮文字颜色.setTitleBgColor(0xFF666666)//标题背景颜色 Night mode.setBgColor(0xFF333333)//滚轮背景颜色 Night mode.setRange(calendar.get(Calendar.YEAR) - 20, calendar.get(Calendar.YEAR) + 20)//默认是1900-2100年.setDate(new Date())// 默认是系统时间*/.setLabel("年","月","日","时","分","秒").build();
pvOptions = new  OptionsPickerView.Builder(MainActivity.this, new OptionsPickerView.OnOptionsSelectListener() {@Overridepublic void onOptionsSelect(int options1, int option2, int options3 ,View v) {//返回的分别是三个级别的选中位置String tx = options1Items.get(options1).getPickerViewText()+ options2Items.get(options1).get(option2)+ options3Items.get(options1).get(option2).get(options3).getPickerViewText();tvOptions.setText(tx);}}).setSubmitText("确定")//确定按钮文字.setCancelText("取消")//取消按钮文字.setTitleText("城市选择")//标题.setSubCalSize(18)//确定和取消文字大小.setTitleSize(20)//标题文字大小.setTitleColor(Color.BLACK)//标题文字颜色.setSubmitColor(Color.BLUE)//确定按钮文字颜色.setCancelColor(Color.BLUE)//取消按钮文字颜色.setTitleBgColor(0xFF333333)//标题背景颜色 Night mode.setBgColor(0xFF000000)//滚轮背景颜色 Night mode.setContentTextSize(18)//滚轮文字大小.setLinkage(false)//设置是否联动,默认true.setLabels("省", "市", "区")//设置选择的三级单位.setCyclic(false, false, false)//循环与否.setSelectOptions(1, 1, 1)  //设置默认选中项.setOutSideCancelable(false)//点击外部dismiss default true.build();pvOptions.setPicker(options1Items, options2Items, options3Items);//添加数据源

四、更多

  1. 如果对以上的使用还有疑问的话,可参考demo代码,请戳我查看demo代码

  2. 如果还是不能满足产品的需求,那么~ 默哀三秒钟… 然后把源代码下载下来自己做改动吧,源代码基本都写了注释了,我也只能帮到这儿了。GitHub项目地址:Android-PickerView

  3. 关于方法名和参数的详细说明,请参考Wiki:请戳我查看Wiki文档,欢迎提Issue,提建议,Pull Request.
      

Android-PickerView系列之介绍与使用篇(一)相关推荐

  1. Android-PickerView系列之源码解析篇(二)

    前言 WheelView想必大家或多或少都有一定了解, 它是一款3D滚轮控件,效果类似IOS 上面的UIpickerview .按照国际惯例,先放一张效果图: 以上是Android-PickerVie ...

  2. 【Android 教程系列第 27 篇】如何使用 Keytool 工具生成 keystore 签名文件

    这是[Android 教程系列第 27 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:Keytool 是什么? 二:Keytool 需要安装吗? 三:Keytool 密钥的存储形式 四:Key ...

  3. Android Gradle系列-进阶篇

    上篇文章我们已经将Gradle基础运用介绍了一遍,可以这么说,只要你一直看了我这个Gradle系列,那么你的Gradle也将过关了,应对正常的工作开发已经不成问题了. 这篇文章我要向你介绍的是关于如何 ...

  4. Android APM 系列一(原理篇)

    图片来自 https://unsplash.com 一. 前言 性能问题是导致 App 用户流失的罪魁祸首之一,如果用户在使用我们 App 的时候遇到诸如页面卡顿.响应速度慢.发热严重.流量电量消耗大 ...

  5. 【Android 教程系列第 30 篇】为什么要为 App 应用加固 ?如何为 App 应用加固 ?

    这是[Android 教程系列第 30 篇],如果觉得有用的话,欢迎关注专栏. 当我们开发的 App 准备做上架应用市场时,应用市场会要求上架的 App 做加固处理,这是为什么呢 ? 文章目录 一:为 ...

  6. 【Android 教程系列第 28 篇】Android 分别使用 jarsigner 和 apksigner 对 APK 签名(v1、v2 签名)的详细教程

    这是[Android 教程系列第 28 篇],如果觉得有用的话,欢迎关注专栏. 为了增加 Apk 的安全性,防止反编译,我们会对开发的 Apk 做签名处理,如果要上架应用商店,部分还会要求 Apk 必 ...

  7. Android自定义控件系列之基础篇

    一.概述 在android开发中很多UI控件往往需要进行定制以满足应用的需要或达到更加的效果,接下来就通过一个系列来介绍自定义控件,这里更多是通过一些案例逐步去学习,本系列有一些典型的应用,掌握好了大 ...

  8. Android面试系列文章2018之内存管理之UI卡顿篇

    Android面试系列文章2018之内存管理之UI卡顿篇 1.UI卡顿的原理   60ftp –> 16ms: Android系统每隔16ms都会对界面进行渲染一次,造成卡顿的原因就是Andro ...

  9. Android 系统(243)---Android进程系列第一篇---进程基础

    Android进程系列第一篇---进程基础 内容预览.png 概述: 本文主要讲解进程基础,更深入的认识有血有肉的进程,内容涉及进程控制块,信号,进程FD泄露等等.仅供参考,欢迎指正. 一.从Linu ...

最新文章

  1. Linux运维宝典:最常用的150个命令汇总
  2. string用法总结
  3. CodeForces 597A Divisibility
  4. 重要提醒--to 小爱
  5. 分享超全的 Linux 渗透测试命令速查表
  6. 解决 vue 项目一直出现 sockjs-node/info?t=1554978**** ,并造成浏览器不能及时更新编码改动结果
  7. 数据库对数字不限长度的冒泡排序
  8. 一个关于组织学员学习技术的笔试题--求讨论
  9. 算法设计与分析——递归与分治——归并排序
  10. 面试字节跳动Android工程师该怎么准备?深度解析,值得收藏
  11. 安全开发 | 如何让Django框架中的CSRF_Token的值每次请求都不一样
  12. Java:转换列表 String 到一个字符串
  13. python文件同时读写_python 同时读取多个文件的例子
  14. Android 补间动画(二)
  15. Office 2010 安装程序包的语言不受系统支持
  16. RL 实践(3)—— 悬崖漫步【QLearning Sarsa 各种变体】
  17. Modbus协议(翻自wiki)
  18. 网传外企巨头Oracle北京裁员900多人,良心赔偿N+6
  19. 图像增强算法(持续更新中)
  20. 火狐浏览器主页被篡改的解决办法!

热门文章

  1. MPP(大规模并行处理)简介
  2. 连续空间和离散空间的距离基础
  3. Visual Studio Code 基本插件
  4. 大数运算(高精度运算)
  5. 26 岁数学天才回国任教,刚以中科大教授之名攻破世界级难题
  6. 使用SNMP检查服务器中运行的进程信息
  7. 广东工业大学数据结构AnyView参考答案
  8. 公众号推广裂变引流?微信公众号裂变引流有哪些方式?
  9. @Autowired的原理简识
  10. mysql数据库j电子课件_mysql数据库(学习课件).ppt