我在StackOverflow上找到了另外一个这个问题的实例,这个问题没有答案(去年),所以我想我再试一次。 (Android DatePicker/Dialog displaying incorrect month/s using min/max date,带有实际图片)
设置Android DatePicker的minDate和maxDate时,它会显示在最小和最大日期范围内不可用的月份。 我将使用以下图片演示此问题:
当我在minDate时:
当我处于日期限制之间时:
当我在maxDate时:
在这种情况下,不可用的月份(在这种情况下是4月和6月)充当最小值和最大值,因此到4月份,DatePicker将拍摄到5月15日,或者尝试滑动到6月将DatePicker移动到5月22日。
是否可以将这些(不可用)月份隐藏起来,因此在此测试用例中,唯一可选择的部分是日期?另外请记住,例如,5月29日到6月5日之间的间隔必须出现在列表中。
答案 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());