PickerView现在在大多数App都有使用到,例如设置时间的时候,或者选择地区的时候,使用PickerView来实现很实用,在底部弹出个对话框,接着进行选择就可以了,而且OptionsPickerView还支持三级联动,支持自定义布局等功能,接下来就简单的用代码实现一个小Demo:

首先就是要添加依赖啦,具体的版本自己选择

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

然后在布局中定义一个Button,然后为这个Button设置点击事件,定义数据,把数据加入到List中,我这边是根据时间来定义的,把数据写死了,也有其他更好的方法,可以问度娘

 final List<String> options1Items = new ArrayList<>();
        options1Items.add(getResources().getString(R.string.morning));
        options1Items.add(getResources().getString(R.string.afternoon));

        final List<String> options2Items = new ArrayList<>();

        for (int i = 0; i <= 12; i++) {
            if (i < 10) {
                options2Items.add("0" + i);
            } else {
                options2Items.add(i + "");
            }

        }

        final List<String> options3Items = new ArrayList<>();
        for (int i = 0; i < 60; i++) {
            if (i < 10) {
                options3Items.add("0" + i);
            } else {
                options3Items.add(i + "");
            }

        }

接着就是重点了,构建一个OptionsPickerView


        OptionsPickerView pvOptions = new OptionsPickerView.Builder(this, new OptionsPickerView.OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                if (getResources().getString(R.string.monning_text).equals(options1Items.get(options1))){
                    text_12 =options2;
                }else {
                    text_12 = 12 + options2;

                }
                //网络请求
                getP().drinkWaterSetting(token, userId, "", "1", text_12 +
                        ":"+options3Items.get(options3), "", "2");
                Log.e("SHAN", "onOptionsSelect: " + userId );
                showTs("添加成功");
            }
        })
                //设置选中项文字颜色
                .setTextColorCenter(getResources().getColor(R.color.black_333333)) 
                //设置文字大小
                .setContentTextSize(15)
                //设置弹框的标题
                .setTitleText(getResources().getString(R.string.set_time))
                //设置点击其他区域取不取消弹窗
                .setOutSideCancelable(false)
                //设置取消文字的颜色
                .setCancelColor(getResources().getColor(R.color.black_333333))
                //设置确定文字的颜色
                .setSubmitColor(getResources().getColor(R.color.black_333333))
                //设置标题文字的颜色
                .setTitleColor(getResources().getColor(R.color.black_333333))
                .setSubCalSize(15)
                .setTitleSize(18)
                .build();

        //这里要把数据Set进去    
        pvOptions.setNPicker(options1Items, options2Items, options3Items);
         //最后一定要调用show方法,不然显示不出来
        pvOptions.show();

代码大概就是这样,效果图如下,OptionsPickerView还有很多样式可以设置,比如自定义标题栏等等,这些我就不一一列举了,大家可以根据自己的需求去设计。
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐