OptionsPickerView条件选择器选择时间和条件选择器

本文详细介绍Android-PickerView控件的使用方法,包括时间选择器和三级条件选择器的实现,提供代码示例,帮助开发者快速掌握并应用到项目中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、时间选择器

在开发中选择时间是一个很常见的需求,Android 自带的没有IOS自带的美观,而且手机不一样效果也不一样

Android-PickerView是一款仿iOS的PickerView控件,并封装了时间选择和选项选择这两种选择器,因为目前我们只使用到时间选择器,所以这里只具体说关于时间的选择。在使用之前我们需要先添加Gradle依赖

首先添加依赖

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

在代码中

//时间选择器
TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {
                           @Override
                           public void onTimeSelect(Date date, View v) {
                               Toast.makeText(MainActivity.this, getTime(date), Toast.LENGTH_SHORT).show();
                           }
                       }).build();

这样一个简单的时间选择器就大功告成了

2、三级条件选择器

这里时选择器的方法

先创建一级的数据

                         

                  options1Items.add("一级1");
                  options1Items.add("一级2");
                //选项2
                options2Items_01 = new ArrayList<>();
                //一级1下级的内容数据
                options2Items_01.add("全部");
                options2Items_01.add("程序");
                options2Items_01.add("参数");
                options2Items_02 = new ArrayList<>();
                //一级2下级的内容数据
                options2Items_02.add("驱动");
                options2Items.add(options2Items_01);
                options2Items.add(options2Items_02);

                //一级2 下的选项3
                options3Items_01 = new ArrayList<>();
                options3Items_01_01 = new ArrayList<>();  //全部 下级目录
                options3Items_01_02 = new ArrayList<>();  //程序  下级目录
                options3Items_01_03 = new ArrayList<>();  //参数   下级目录
                //全部下级的内容数据
                options3Items_01_01 .add("全部");
                options3Items_01_01 .add("驱动");
                //程序下级的内容数据
                options3Items_01_02.add("控制");
                options3Items_01_02.add("维保");
                options3Items_01_02.add("系统");
                //参数下级的内容数据
                options3Items_01_03 .add("管理");
                options3Items_01_03 .add("群管理");
                options3Items_01.add(options3Items_01_01);
                options3Items_01.add(options3Items_01_02);
                options3Items_01.add(options3Items_01_03);

                 //一级2 下的选项3
                options3Items_02 = new ArrayList<>();
                options3Items_02_02 = new ArrayList<>(); //驱动  下级目录
                options3Items_02_02 .add("全部");
                options3Items_02.add(options3Items_02_02);
                
                 //最后把三级数据存到一个集合里面
                options3Items.add(options3Items_01);
                options3Items.add(options3Items_02);
pickerBuilder = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> {
    //判 Null
    if (options1Items.size() > 0 && options1Items != null) {
        String tx = options1Items.get(options1);
        if (options2Items.size() > 0 && options2Items != null) {
            String tx1 = options2Items.get(options1).get(options2);
            if (options3Items.get(options1).get(options2).size() > 0) {
                String tx2 = options3Items.get(options1).get(options2).get(options3);
                //返回的分别是三个级别的选中位置
                mTvmokuai.setText(tx + "/" + tx1 + "/" + tx2);
                
            } else {
                mTvmokuai.setText(tx + "/" + tx1);
               
            }
        }
    }
})
        .setTitleText("模块选择")
        .setContentTextSize(16)//设置滚轮文字大小
        .setDividerColor(Color.LTGRAY)//设置分割线的颜色
        .setSelectOptions(0, 0, 0)//默认选中项
        .setBgColor(Color.WHITE)
        .setTitleBgColor(Color.WHITE)
        .setTitleColor(Color.LTGRAY)
        .setCancelColor(getResources().getColor(R.color.color_light_blue))
        .setSubmitColor(getResources().getColor(R.color.color_light_blue))
        .setTextColorCenter(Color.BLACK)
        .isRestoreItem(true)//切换时是否还原,设置默认选中第一项。
        .isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
        .setOutSideColor(0x00000000) //设置外部遮罩颜色
        .setOptionsSelectChangeListener((options1, options2, options3) -> {
            //滑动当前的Itme
            String str = "options1: " + options1 + "\noptions2: " + options2 + "\noptions3: " + options3;
        })
        .build();
//给选择器添加数据
pickerBuilder.setPicker(options1Items);//一级选择器
pickerBuilder.setPicker(options1Items, options2Items);//二级选择器
pickerBuilder.setPicker(options1Items, options2Items, options3Items);//三级选择器

这样一个选择器就可以使用了

PickerView (2.x系列) 精仿iOS的PickerView控件,有时间选择选项选择并支持一二三级联动效果 ——TimePickerView 时间选择器,支持年月日时分,年月日,年月,时分等格式 ——OptionsPickerView 选项选择器,支持一,二,三级选项选择,并且可以设置是否联动 2.x是全新的3D效果,比1.x版本更加贴近iOS的效果,从外观细节上也得到了改善。api兼容1.x版本,只需要把依赖的版本号升级即可,几乎不用修改代码即可完成升级。 使用gradle 依赖: compile 'com.bigkoo:pickerview:2.0.8' Demo 图片 demo代码请看戳这里 更新说明 v2.0.0 不需修改任何代码就可以兼容1.x 外观大整改 支持反射获取getPickerViewText()来获取要展示数据,以前只能传String的对象,现在可以传任意对象只要有getPickerViewText()函数即可显示对应的字符串,如果没有getPickerViewText()函数则使用对象toString作为显示 加入setTitle v2.0.1 去掉popupWindow,改用View,类名也对应修改为TimePickerView OptionsPickerView 加入遮罩效果 v2.0.2 修复不循环模式下点击空白item处出现数组越界问题 修复循环模式下只有一条数据的时候只显示三条而不是填充满高度问题 v2.0.3 修复时间选择的时候部分数字选不到直接跳到下一个数字的问题 v2.0.4 修复不循环模式下顶部超出范围问题 wheel view文字颜色通过xml配置 v2.0.5 修复不循环模式下底部超出范围问题 v2.0.6 修复不循环模式下点击超出范围问题,修复后点击空白的地方,只能滚到最顶或最底,不会滚出数据范围。 v2.0.7 修复设置初始化position ,第三级数据不对的BUG。 v2.0.8 修复#41 未选中项有错乱数据问题。 加入pickerview_customTextSize pickerview_textsize 到 xml 中 来控制自定义文字大小 ---------------------华丽丽的分割线-------------------------- PickerView1.x (我已经把1.0.3版本分到v1.x的分支去了,停止维护1.x的分支) 使用gradle 依赖: compile 'com.bigkoo:pickerview:1.0.3' Demo 图片(招行信用卡的“掌上生活”里面条件选择器他们用的就是我这个库,大家可以当实际项目参考) Thanks WheelView androidWheelView
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值