Android PickerView的简单使用

简介

PickerView,Android滚动选择器。最近在学习过程中有些许经验,在此与大家分享。此控件在设置时间、选择地区等方面,对用户有较好的使用体验,并且易于实现使用方便。

导入依赖

implementation'com.contrarywind:Android-PickerView:4.1.9'

代码调用

PickerView可以不用在xml文件中增加控件,可以直接通过java代码进行使用。PickerView封装了两种选择器。

第一种:TimePickerView

时间选择器,以下代码节选自PickerView的Github仓库

TimePickerView pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
    @Override
    public void onTimeSelect(Date date, View v) {
        tv_pickerview.setText(getTime(date));
    }
})
        .setTimeSelectChangeListener(new OnTimeSelectChangeListener() {
            @Override
            public void onTimeSelectChanged(Date date) {
            
            }
        })
        .setType(new boolean[]{true, true, true, true, true, true})
        .setItemVisibleCount(6)
        .setLineSpacingMultiplier(2.0f)
        .isAlphaGradient(true)
        .build();
pvTime.show()

getTime()方法

private String getTime(Date date) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return format.format(date);

效果图:

在这里插入图片描述

第二种:OptionsPickerView

可自定义的选择器,使用方法也很简单
首先:创建数据项,每个数据项为一个列表,每多定义一个项就要多嵌套一层

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

添加数据(重点)

 private void initData() {
        //加入第一个列表数据
        options1Items.add(getResources().getString(R.string.morning));
        options1Items.add(getResources().getString(R.string.afternoon));

        List<String> a = new ArrayList<>();
        List<String> b = new ArrayList<>();
        List<List<String>> c = new ArrayList<>();
        
        //创建最后一个列表数据(分)
        for (int i = 0; i < 60; i++) {
            if (i < 10) {
                a.add("0" + i + "分");
            } else {
                a.add(i + "分");
            }
        }
        
        //创建第二个列表数据(时),同时将最后一个列表数据加入c,加入次数为第二个列表的大小
        for (int i = 0; i <= 12; i++) {
            if (i < 10) {
                b.add("0" + i + "时");
            } else {
                b.add(i + "时");
            }
            c.add(a);
        }
        
        //将第二个列表数据加入options2Itmes,加入次数为options1Items的大小
        for (int j = 0; j < options1Items.size(); j++) {
            options2Items.add(b);    
        }
        
        //将第三个列表数据加入options3Items,加入次数为第二个列表数据的长度
        for (int i = 0; i < b.size(); i++) {
            options3Items.add(c);
        }
    }

通过show()方法来控制显示

OptionsPickerView pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
            @Override
            public void onOptionsSelect(int options1, int options2, int options3, View v) {
                String date = options1Items.get(options1) + " " + options2 + "时 " + options3 + "分";
                //在此获取选择到的内容
            }
        })
                .setTitleText("选择时间")
                .setContentTextSize(16)
                .build();

        pvOptions.setPicker(options1Items, options2Items, options3Items);
        pvOptions.show();

效果图:
在这里插入图片描述

最后

OptionsPickerView相对与TimePickerView来说麻烦一点,但是却有很大的调节空间,添加数据的感觉就像是数据结构中的树结构一样,由第一个列表的大小决定一开始有多少点,在每个点上又有各自的分叉,但是分叉的数量却是由开发者自行定义,对于地区选择来说,感觉会更明显。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值