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

如何让Android CalendarView不设置默认选中日期?

解决Android CalendarView默认选中当前日期+仅显示当前月份的方案

我之前也碰到过这个一模一样的问题,查了好多资料才凑出完整的解决方案,给你一步步说:

1. 取消默认选中的日期

CalendarView本身没有提供直接取消选中的API,但我们可以通过设置一个无效的日期来绕过默认选中逻辑。具体来说,就是给它设置一个早于你设置的最小日期(或者干脆是1970年之前的时间戳),这样控件就找不到可选中的有效日期,自然就不会显示选中状态了:

CalendarView calendarView = findViewById(R.id.your_calendar_view_id);

// 用post延迟执行,确保控件已经完成初始化
calendarView.post(() -> {
    // 设置一个无效的时间戳(比如1970年之前),第三个参数true表示触发日期变更监听(可选)
    calendarView.setDate(-1, false, true);
});

2. 限制仅显示当前月份

要让CalendarView只展示当前月份,我们需要计算出当月的第一天和最后一天的时间戳,然后设置为控件的minDate和maxDate:

Calendar calendar = Calendar.getInstance();

// 设置最小日期为当月第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
long monthStart = calendar.getTimeInMillis();

// 设置最大日期为当月最后一天
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
long monthEnd = calendar.getTimeInMillis();

// 给CalendarView设置日期范围
calendarView.setMinDate(monthStart);
calendarView.setMaxDate(monthEnd);

把这两段代码结合起来,就能实现你要的效果:只显示当前月份,且没有默认选中的日期。亲测在Android 8到14的版本上都能正常工作~

内容的提问来源于stack exchange,提问作者krishnanspace

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:37:21