我正在为我的 android 应用程序构建一个自定义日历视图,允许您在几个月之间滑动。我创建了自定义日历方形视图,并将其嵌入到自定义日历月视图中,并且在 1 个月的范围内一切正常。
不幸的是,现在我被困住了。我现在想将我的自定义日历月视图嵌入到无限视图寻呼机中,这样我就可以无限期地向前和向后滚动日历。
我已经尝试使用一个简单的技巧来调整这个水平寻呼机以进行无限滚动。我持有一组 3 个日历月视图,并根据用户滚动到的位置更新列表。例子...
- 【七月、八月、九月】(重点是八月,然后用户滑动到九月)
- [七月、八月、九月](现在重点在九月)
- [ August , August, September ](八月左移一位,覆盖七月)
- [August, September , September ](将九月左移一位,覆盖八月)
- [August, September , September](将视图设置为九月中旬,所以我们再次居中)
- [8 月、9 月、10 月](用实际的下个月覆盖 9 月 2 日)
但是,当我这样做时,当滑动到下个月时,屏幕上会出现明显的闪光。
这是向前滚动的代码(注意:向后滚动有同样的问题)
private void updateViewsForForwardScroll() {
// Note: INDEX_PREV = 0; INDEX_CURR = 1; INDEX_NEXT = 2
((CalendarMonthView) getChildAt(INDEX_PREV)).showMonth(oneMonthPriorTo(currentMonth));
((CalendarMonthView) getChildAt(INDEX_CURR)).showMonth(currentMonth);
setCurrentScreen(INDEX_CURR, false);
((CalendarMonthView) getChildAt(INDEX_NEXT)).showMonth(oneMonthAfter(currentMonth));
}
我认为问题在于 setCurrentScreen() 在 showMonth(currentMonth) 之前完成,因此设置屏幕时 INDEX_CURR 的视图仍在更新。我尝试通过使用以下策略来解决这个问题......
- 【七月、八月、九月】(重点是八月,然后用户滑动到九月)
- [七月、八月、九月](现在重点在九月)
- [8 月、9 月](除去 7 月,但将其存放起来以供回收利用)
- [August, September , October](循环使用七月改为显示十月,并添加视图)
我根本没有触及当前聚焦的视图,但仍然有一个闪光!这一次,屏幕从九月闪烁到八月,然后又回到九月。
那么我做错了什么?有没有办法在用户不知道的情况下做我想做的事情?如果没有,我可以利用现有的课程吗?
(作为一个附带问题,有什么方法可以直观地自定义 Android CalendarView?那真的可以解决我所有的问题......)
提前致谢!