如何在MaterialDatePicker中禁用未来日期?附现有代码
禁用MaterialDatePicker中的未来日期
要实现禁用未来日期的效果,你需要通过CalendarConstraints设置可选日期的上限为当天,修改后的代码如下:
// 创建日历约束构建器,设置最大可选日期为今天 CalendarConstraints constraints = new CalendarConstraints.Builder() .setEnd(MaterialDatePicker.todayInUtcMilliseconds()) .build(); MaterialDatePicker<Long> datePicker = MaterialDatePicker.Builder.datePicker() .setTitleText("选择日期") .setSelection(MaterialDatePicker.todayInUtcMilliseconds()) .setCalendarConstraints(constraints) // 应用约束条件 .build(); btnDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { datePicker.show(getSupportFragmentManager(),"Material_Date_Picker"); datePicker.addOnPositiveButtonClickListener(new MaterialPickerOnPositiveButtonClickListener<Long>() { @Override public void onPositiveButtonClick(Long selection) { // 处理选中的日期逻辑 } }); } });
关键说明
CalendarConstraints.Builder用于定义日期选择器的可选范围,setEnd()方法传入当天的UTC时间戳,即可将未来日期设为不可选状态- 通过
setCalendarConstraints()把构建好的约束传入日期选择器,约束即可生效
设置完成后,所有未来日期会呈现灰色不可点击状态,和你期望的效果一致。
内容的提问来源于stack exchange,提问作者Dulitha Bandaranayake
相关产品推荐
相关产品推荐

