5

我正在使用 DatePickerDialog 和 DatePicker 来设置特定范围。

datePicker.setMinDate(minDate);
datePicker.setMaxDate(maxDate);

如果我的最小/最大日期在一个月的范围内(例如:7.2.2014 - 27.2.2014),我仍然会在对话框中显示相邻的月份(1 月、3 月)。如果我选择上个月(一月),对话框会自动切换到 minDate 并且月份切换回二月。下个月也是如此。

在此处输入图像描述

有没有办法解决这个问题,以便我只显示在我范围内的月份?

4

2 回答 2

1

在 Android Month 从零开始......

所以你必须在 1 月使用 0,在 12 月使用 11

于 2014-02-14T13:05:48.307 回答
0

我有同样的错误(以及 StackOverflow 上的许多人)

我的解决方案:

    monthPickerFrom =(DatePicker)mDialogView.findViewById(R.id.monthPickerFrom);
    HideDay(monthPickerFrom);
    Calendar currentDate = Calendar.getInstance();
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, 2007);
    cal.set(Calendar.MONTH, Calendar.JANUARY);
    cal.set(Calendar.DAY_OF_MONTH, 1);
    cal.set(Calendar.HOUR, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    monthPickerFrom.setMinDate(cal.getTimeInMillis());

    cal.set(Calendar.YEAR, currentDate.get(Calendar.YEAR));
    cal.set(Calendar.MONTH, currentDate.get(Calendar.MONTH));
    monthPickerFrom.setMaxDate(cal.getTimeInMillis());

    monthPickerFrom.init(currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), 1, new DatePicker.OnDateChangedListener() {
        @Override
        public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            ...
    });
于 2017-05-19T10:12:44.937 回答