16

我只在 StackOverflow 上发现了这个问题的另一个实例(去年),但没有得到答复,所以我想再试一次。(Android DatePicker/Dialog 使用最小/最大日期显示不正确的月份/秒,并带有实际图像)

在设置 Android DatePicker 的 minDate 和 maxDate 时,它​​会显示在 min 和 max date 范围内不可用的月份。我将使用以下图像演示此问题:

当我在 minDate 时:

当我在 minDate

当我在日期限制之间时:

在日期之间

当我在 maxDate 时:

在 maxDate

在这种情况下,不可用的月份(在本例中为 4 月和 6 月)充当最小值和最大值,因此到 4 月,DatePicker 将拍摄到 5 月 15 日,或者尝试滑到 6 月会将 DatePicker 移动到 5 月 22 日.

是否可以将那些(不可用的)月份隐藏起来,所以在这个测试用例中,唯一可选择的部分是日期?还要记住,例如在 5 月 29 日和 6 月 5 日之间,6 月必须出现在列表中。

4

2 回答 2

2

我通过将当前时间重置为午夜来解决该问题:

Calendar date = Calendar.getInstance();
// reset hour, minutes, seconds and millis
date.set(Calendar.HOUR_OF_DAY, 0);
date.set(Calendar.MINUTE, 0);
date.set(Calendar.SECOND, 0);
date.set(Calendar.MILLISECOND, 0);
datePicker.setMaxDate(date.getTimeInMillis());
于 2016-03-09T10:57:00.727 回答
0

选项 1. 你可以使用android-times-square

并给出一个自定义日期范围,以便它淡出不可用的日期,也提供更多的视觉表示

Calendar nextYear = Calendar.getInstance();
nextYear.add(Calendar.YEAR, 1);

CalendarPickerView calendar = (CalendarPickerView) findViewById(R.id.calendar_view);
Date today = new Date();
calendar.init(today, nextYear.getTime())
    .inMode(RANGE);
于 2015-08-14T05:43:48.723 回答