样式外观:
集成与配置:
1、导入依赖:
implementation 'com.contrarywind:Android-PickerView:4.1.6'
2、在使用前初始化:
private TimePickerBuilder pvTime;
/**
* author:xingHai.zhao
* duty:初始化时间选择器
*/
public void initTimeSelect() {
//时间范围和当前时间
Calendar thisDate = Calendar.getInstance();
Calendar startDate = Calendar.getInstance();
//开始时间设置两年前 0 = 1月
startDate.set(thisDate.get(Calendar.YEAR) - 2, 0, 1);
Calendar endDate = Calendar.getInstance();
//初始化时间选择器
pvTime = new TimePickerBuilder(XXXActivity.this, (date, v) -> {//选中事件回调
//展示赋值,格式自定义
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM");
((TextView) v).setText(sdf.format(date));
}).setLayoutRes(R.layout.pickerview_custom_time, v -> {
Button btnSubmit = v.findViewById(R.id.btnSubmit);
Button btnCancel = v.findViewById(R.id.btnCancel);
//确定
btnSubmit.setOnClickListener(v1 -> {
pvTime.returnData();
pvTime.dismiss();
});
//取消
btnCancel.setOnClickListener(v2 -> {
pvTime.dismiss();
});
}).setType(new boolean[]{true, true, false, false, false, false})
//设置空字符串""以隐藏其单位, 也可以把单位都写上:年月日时分秒
.setLabel("年", "月", "", "", "", "")
.setDividerColor(Color.DKGRAY)
.setContentTextSize(20)
.setDate(startDate)
.setRangDate(startDate, endDate)
.setDecorView((ViewGroup) findViewById(R.id.choice_layout))//非dialog模式下,设置ViewGroup,
// pickerView将会添加到这个ViewGroup中
.setBackgroundId(0xb0000000)
.setOutSideCancelable(false)
.build();
pvTime.setDate(thisDate);
}
2、触发显示:
- 上面代码的XXXActivity 对应您自己的页面
- 这里的XXXView 对应您需要触发点击的View
- 这里的XXXTextView 对应选择时间完毕后需要改变展示内容的TextView
XXXView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pvTime.show(XXXTextView, true);
}
});