1.首先去maven库拉取所需的library
implementation 'com.contrarywind:Android-PickerView:4.1.9' //当前使用版本号4.1.9
2.时间选择器用法
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Calendar selectedDate = Calendar.getInstance();//系统当前时间
Calendar startDate = Calendar.getInstance();//控件起始时间
//注:(1)年份可以随便设置 (2)月份是从0开始的(0代表1月 11月代表12月),即设置0代表起始时间从1月开始
//(3)日期必须从1开始,因为2月没有30天,设置其他日期时,2月份会从设置日期开始显示导致出现问题
startDate.set(1900, 1, 1);//该控件从1900年1月1日开始
Calendar endDate = Calendar.getInstance();//控件截止时间
endDate.set(2050, 2, 28);//该控件到2050年2月28日结束
try {
String start1 = "2020-02-28 18:36";//格式必须与formatter的格式一致
Date date = formatter.parse(start1);
selectedDate.setTime(date);//指定控件初始值显示哪一天
}catch (Exception e){
}
//时间选择器
TimePickerView pvTime = new TimePickerBuilder(MainActivity.this, new OnTimeSelectListener() {
public void onTimeSelect(final Date date, View v) {
String choiceTime = formatter.format(date);//日期 String
Toast.makeText(MainActivity.this,choiceTime,Toast.LENGTH_LONG).show();
long startl = date.getTime();//日期 long
}
}).setDate(selectedDate)//设置系统时间为当前时间
.setRangDate(startDate, endDate)//设置控件日期范围 也可以不设置默认1900年到2100年
.setType(new boolean[]{true, true, true, true, true, false})//设置年月日时分秒是否显示 true:显示 false:隐藏
.setLabel("年", "月", "日", "时", "分", "秒")
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
.setDividerColor(0xFF24AD9D)//设置分割线颜色
.isCyclic(false)//是否循环显示日期 例如滑动到31日自动转到1日 有个问题:不能实现日期和月份联动
.build();
pvTime.show();
3.条件选择器用法
//条件选择器
OptionsPickerView pvOptions = new OptionsPickerBuilder(MainActivity.this, new 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();