zoukankan      html  css  js  c++  java
  • 谈谈-Android-PickerView系列之介绍与使用(一)

    一、介绍

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

     

    WheelView —— 基础控件

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

    OptionsPickerView —— 选项选择器

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

    TimePickerView —— 时间选择器

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

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

     

    <com.bigkoo.pickerview.lib.WheelView

          android:id="@+id/wv_options"

          android:layout_width="match_parent"

                         android:layout_height="wrap_content"/>

     

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

     

    TimePicker.gif 

     

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

     



    OptionsPicker.gif

     

     

    二、使用

    1.添加 Jcenter 仓库 Gradle 依赖:

     

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

    GitHub的项目官方地址

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

     

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

     

    或者

    //条件选择器
     pvOptions = new  OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {
                @Override
                public 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(this, new TimePickerView.OnTimeSelectListener() {
                @Override
                public 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(this, new OptionsPickerView.OnOptionsSelectListener() {
                @Override
                public 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. 

    文章转载自:http://blog.csdn.net/qq_22393017/article/details/58099486

  • 相关阅读:
    在新浪爱问上看到的有趣名字都记下来
    FastReports_4.14.1 _Cliff手动安装
    计算机算法对做事效率的启发(既要高强度猛攻,也要细水长流)
    有趣的数组
    listView 分页加载数据
    如何隐藏Cognos Viewer
    使用DBUnit实现对数据库的测试
    通过Jasmine和Guard自动测试JavaScript
    for惠普2013实习生
    栈的顺序存储,所谓的顺序栈
  • 原文地址:https://www.cnblogs.com/zly1022/p/7802782.html
Copyright © 2011-2022 走看看