我在我的一个项目中使用标准CalendarView
。当我在对话框中显示它时,它似乎正常工作,但当我在应用程序中的另一个活动中显示它时,它似乎随机几个星期。在日历中向上和向下滚动会导致它们再次出现,但其他人会消失。通常,丢失的一周是包含我使用setDate()
设置日期的那一周,因此甚至不会显示所选日期。
是否有其他人在CalendarView
看到此行为?我正在使用SDK v17
。
<CalendarView
android:id="@+id/cv_planner"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="@dimen/item_list_padding"
android:selectedDateVerticalBar="@color/teal"
android:selectedWeekBackgroundColor="@color/teal"
android:showWeekNumber="true" />
答案 0 :(得分:0)
作为临时修复,通过向下/向上滚动一两个月来强制刷新,然后向后滚动。您应该看到刷新导致丢失的一周出现。
如果这确实是一个没有解决方法的错误,那么为弥补这一点而涉及的代码并不是微不足道的。我想它会涉及在你的UI线程上从包含的活动发布一个runnable方法,该活动将在渲染后分析视图以检查缺失的一周,然后以某种方式强制刷新视图(这将是“最简单的”在进入CalendarView本身的子类化并尝试以更精细的粒度控制其渲染之前,例如通过onMeasure或onLayout)。
更新:找到解决方法 - CalendarView Issues when Used Directly (Outside of a DatePicker)