Android-PickerView系列之介绍与使用篇(一)
声明:本文为博主原创文章,转载请注明出处:小嵩的博客
一、介绍
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);//添加数据源
四、更多
如果对以上的使用还有疑问的话,可参考demo代码,请戳我查看demo代码
如果还是不能满足产品的需求,那么~ 默哀三秒钟… 然后把源代码下载下来自己做改动吧,源代码基本都写了注释了,我也只能帮到这儿了。GitHub项目地址:Android-PickerView
- 关于方法名和参数的详细说明,请参考Wiki:请戳我查看Wiki文档,欢迎提Issue,提建议,Pull Request.
Android-PickerView系列之介绍与使用篇(一)相关推荐
- Android-PickerView系列之源码解析篇(二)
前言 WheelView想必大家或多或少都有一定了解, 它是一款3D滚轮控件,效果类似IOS 上面的UIpickerview .按照国际惯例,先放一张效果图: 以上是Android-PickerVie ...
- 【Android 教程系列第 27 篇】如何使用 Keytool 工具生成 keystore 签名文件
这是[Android 教程系列第 27 篇],如果觉得有用的话,欢迎关注专栏. 文章目录 一:Keytool 是什么? 二:Keytool 需要安装吗? 三:Keytool 密钥的存储形式 四:Key ...
- Android Gradle系列-进阶篇
上篇文章我们已经将Gradle基础运用介绍了一遍,可以这么说,只要你一直看了我这个Gradle系列,那么你的Gradle也将过关了,应对正常的工作开发已经不成问题了. 这篇文章我要向你介绍的是关于如何 ...
- Android APM 系列一(原理篇)
图片来自 https://unsplash.com 一. 前言 性能问题是导致 App 用户流失的罪魁祸首之一,如果用户在使用我们 App 的时候遇到诸如页面卡顿.响应速度慢.发热严重.流量电量消耗大 ...
- 【Android 教程系列第 30 篇】为什么要为 App 应用加固 ?如何为 App 应用加固 ?
这是[Android 教程系列第 30 篇],如果觉得有用的话,欢迎关注专栏. 当我们开发的 App 准备做上架应用市场时,应用市场会要求上架的 App 做加固处理,这是为什么呢 ? 文章目录 一:为 ...
- 【Android 教程系列第 28 篇】Android 分别使用 jarsigner 和 apksigner 对 APK 签名(v1、v2 签名)的详细教程
这是[Android 教程系列第 28 篇],如果觉得有用的话,欢迎关注专栏. 为了增加 Apk 的安全性,防止反编译,我们会对开发的 Apk 做签名处理,如果要上架应用商店,部分还会要求 Apk 必 ...
- Android自定义控件系列之基础篇
一.概述 在android开发中很多UI控件往往需要进行定制以满足应用的需要或达到更加的效果,接下来就通过一个系列来介绍自定义控件,这里更多是通过一些案例逐步去学习,本系列有一些典型的应用,掌握好了大 ...
- Android面试系列文章2018之内存管理之UI卡顿篇
Android面试系列文章2018之内存管理之UI卡顿篇 1.UI卡顿的原理 60ftp –> 16ms: Android系统每隔16ms都会对界面进行渲染一次,造成卡顿的原因就是Andro ...
- Android 系统(243)---Android进程系列第一篇---进程基础
Android进程系列第一篇---进程基础 内容预览.png 概述: 本文主要讲解进程基础,更深入的认识有血有肉的进程,内容涉及进程控制块,信号,进程FD泄露等等.仅供参考,欢迎指正. 一.从Linu ...
最新文章
- Linux运维宝典:最常用的150个命令汇总
- string用法总结
- CodeForces 597A Divisibility
- 重要提醒--to 小爱
- 分享超全的 Linux 渗透测试命令速查表
- 解决 vue 项目一直出现 sockjs-node/info?t=1554978**** ,并造成浏览器不能及时更新编码改动结果
- 数据库对数字不限长度的冒泡排序
- 一个关于组织学员学习技术的笔试题--求讨论
- 算法设计与分析——递归与分治——归并排序
- 面试字节跳动Android工程师该怎么准备?深度解析,值得收藏
- 安全开发 | 如何让Django框架中的CSRF_Token的值每次请求都不一样
- Java:转换列表 String 到一个字符串
- python文件同时读写_python 同时读取多个文件的例子
- Android 补间动画(二)
- Office 2010 安装程序包的语言不受系统支持
- RL 实践(3)—— 悬崖漫步【QLearning Sarsa 各种变体】
- Modbus协议(翻自wiki)
- 网传外企巨头Oracle北京裁员900多人,良心赔偿N+6
- 图像增强算法(持续更新中)
- 火狐浏览器主页被篡改的解决办法!