添加依赖
compile 'com.contrarywind:Android-PickerView:4.1.6'
private List<String> options1Items = new ArrayList<>();
private OptionsPickerView pvOptions;
@Override
protected void initData() {
for (int i = 1 ;i < 25 ; i ++){
options1Items.add(""+i);
}
initOptionPicker();
initTimePicker();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.add_startTime:
pvTime.show(v);//弹出时间选择器,传递参数过去,回调的时候则可以绑定此view
break;
case R.id.add_planTime:
onOptionPicker(v);
pvOptions.show(); //弹出条件选择器
break;
}
}
private void initOptionPicker() {//条件选择器初始化
/**
* 注意 :如果是三级联动的数据(省市区等),请参照 JsonDataActivity 类里面的写法。
*/
pvOptions = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
//返回的分别是三个级别的选中位置
// String tx = options1Items.get(options1)
// add_planTime.setText(tx);
}
})
.setTitleText("计划时长")
.setContentTextSize(20)//设置滚轮文字大小
.setDividerColor(Color.rgb(240,240,240))//设置分割线的颜色
.setSelectOptions(0, 1)//默认选中项
.setBgColor(Color.WHITE)
.setTitleBgColor(Color.rgb(245,245,245))
.setTitleColor(Color.BLACK)
.setCancelColor(Color.rgb(28,134,238))
.setSubmitColor(Color.rgb(28,134,238))
.setTextColorCenter(Color.BLACK)
.isRestoreItem(true)//切换时是否还原,设置默认选中第一项。
.isCenterLabel(false) //是否只显示中间选中项的label文字,false则每项item全部都带有label。
.setLabels("时", "", "")
.setOptionsSelectChangeListener(new OnOptionsSelectChangeListener() {
@Override
public void onOptionsSelectChanged(int options1, int options2, int options3) {
String str = "options1: " + options1;
Toast.makeText(NewTaskActivity.this, str, Toast.LENGTH_SHORT).show();
}
})
.build();
// pvOptions.setSelectOptions(1,1);
pvOptions.setPicker(options1Items);//一级选择器
}
以上为单项选择代码
以下为日期选择代码
private TimePickerView pvTime;
//Dialog 模式下,在底部弹出
private void initTimePicker() {
pvTime = new TimePickerBuilder(this, new OnTimeSelectListener() {
@Override
public void onTimeSelect(Date date, View v) {
Toast.makeText(NewTaskActivity.this, getTime(date), Toast.LENGTH_SHORT).show();
Log.i("pvTime", "onTimeSelect");
}
})
.setTimeSelectChangeListener(new OnTimeSelectChangeListener() {
@Override
public void onTimeSelectChanged(Date date) {
Log.i("pvTime", "onTimeSelectChanged");
}
})
.setType(new boolean[]{true, true, true, true, true, true})
.isDialog(true) //默认设置false ,内部实现将DecorView 作为它的父控件。
.build();
Dialog mDialog = pvTime.getDialog();
if (mDialog != null) {
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.BOTTOM);
params.leftMargin = 0;
params.rightMargin = 0;
pvTime.getDialogContainerLayout().setLayoutParams(params);
Window dialogWindow = mDialog.getWindow();
if (dialogWindow != null) {
dialogWindow.setWindowAnimations(com.bigkoo.pickerview.R.style.picker_view_slide_anim);//修改动画样式
dialogWindow.setGravity(Gravity.BOTTOM);//改成Bottom,底部显示
}
}
}
private String getTime(Date date) {//可根据需要自行截取数据显示
Log.d("getTime()", "choice date millis: " + date.getTime());
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(date);
}