【问题标题】:CalendarView to setMinDate to setMaxDateCalendarView 到 setMinDate 到 setMaxDate
【发布时间】:2015-09-03 15:11:31
【问题描述】:

尝试解决这个问题一整天,但无法解决问题。

我想要的是将日历视图的最小值和最大值设置为当前月份和年份以及所有日期。

因此用户无法滚动到上个月或下个月。

到目前为止我尝试的是:

calendar = Calendar.getInstance();
    int currentYear = calendar.get(Calendar.YEAR);
    int currentMonth = calendar.get(Calendar.MONTH) + 1;
    int currentDay = calendar.get(Calendar.DATE);
    int minMonthCalendarView = calendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1;
    int maxMonthCalendarView = calendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 2;

    technicianDateHint.setText(getResources().getString(R.string.Your) + " " + String.valueOf(currentDay) + "-" +
            String.valueOf(currentMonth) + "-" + String.valueOf(currentYear));

    try {
        date = DDMMMYYYY.parse(item.getDueDate());
        item.setDueDate(DDMMYYY.format(date));
    } catch (ParseException e1) {
        e1.printStackTrace();
    }
    userDate.setText(item.getDueDate());
    technicianDate.setShowWeekNumber(false);
    technicianDate.setMinDate(minMonthCalendarView);
    technicianDate.setMaxDate(maxMonthCalendarView);
    technicianDate.setUnfocusedMonthDateColor(Color.TRANSPARENT);
    technicianDate.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
        @Override
        public void onSelectedDayChange(CalendarView calendarView, int year, int month, int day) {
            technicianDateHint.setText(day + "-" + month + "-" + year);

        }
    });

int minMonthCalendarView = calendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 1; int maxMonthCalendarView = calendar.getActualMaximum(Calendar.DAY_OF_MONTH) + 2;

当使用 minDate 设置而不使用 maxDate 时,它​​可以正常工作。由于用户无法滚动到上个月,但可以滚动到下个月。

有什么方法可以将 setMinDate 和 setMaxDate 设置为当前月份?

【问题讨论】:

    标签: java android


    【解决方案1】:

    试试这个:

     Calendar calendar = Calendar.getInstance();
     calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
     calendar.set(Calendar.HOUR_OF_DAY, 23);//not sure this is needed
     long endOfMonth = calendar.getTimeInMillis();
     //may need to reinitialize calendar, not sure
     calendar = Calendar.getInstance();
     calendar.set(Calendar.DATE, 1);
     calendar.set(Calendar.HOUR_OF_DAY, 0);
     long startOfMonth = calendar.getTimeInMillis();
     calendarView.setMaxDate(endOfMonth);
     calendarView.setMinDate(startOfMonth);
    

    【讨论】:

    • 日历初始化的小改动。私人日历日历开始;私人日历日历结束;工作完美,谢谢伙计....马特
    猜你喜欢
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2022-08-26
    • 1970-01-01
    相关资源
    最近更新 更多