如何知道当前在 CalendarView 中可见的月份和年份?

How to know which month and year is currently visible in CalendarView?

我正在开发一个基于 MaterialCalendarView (prolificinteractive) 的应用程序 我正在用可绘制对象等来装饰日子。我想知道用户当前可以看到哪个月份和年份,以便我只能为当前可见月份而不是所有月份,因为它会无缘无故地减慢应用程序。注意:我不是在谈论当前选择的日期。

已经有一个 OnMonthChangedListener,但它甚至没有月份参数!如果你不介意反思,你可以这样做:

calview.setOnMonthChangedListener((widget, date) -> {
    try {
        Field currentMonthField = MaterialCalendarView.class.getDeclaredField("currentMonth");
        currentMonthField.setAccessible(true);
        int currentMonth = ((CalendarDay) currentMonthField.get(widget)).getMonth();
        // Do something, currentMonth is between 1 and 12.

    } catch (NoSuchFieldException | IllegalAccessException e) {
        // Failed to get field value, maybe library was changed.
    }
});

或者更好的是,打开并发出或发出拉取请求,使该字段 public 在调用侦听器时传递其值。