如何知道当前在 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 在调用侦听器时传递其值。
我正在开发一个基于 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 在调用侦听器时传递其值。