使用最小/最大限制时,Android DatePicker显示不可用的月份

时间:2015-05-15 11:59:11

标签: android datepicker android-datepicker maxdate mindate

我在StackOverflow上找到了另外一个这个问题的实例,这个问题没有答案(去年),所以我想我再试一次。 (Android DatePicker/Dialog displaying incorrect month/s using min/max date,带有实际图片)

设置Android DatePicker的minDate和maxDate时,它会显示在最小和最大日期范围内不可用的月份。 我将使用以下图片演示此问题:

当我在minDate时:

When I'm at minDate

当我处于日期限制之间时:

In between dates

当我在maxDate时:

At maxDate

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

是否可以将这些(不可用)月份隐藏起来,因此在此测试用例中,唯一可选择的部分是日期?另外请记住,例如,5月29日到6月5日之间的间隔必须出现在列表中。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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

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());