You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 03:25:04