版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39249422/article/details/90902734
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);//三级选择器
这样一个选择器就可以使用了