Android CalendarView随机丢弃周数

时间:2013-07-08 03:10:16

标签: android date picker calendarview

我在我的一个项目中使用标准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" />

1 个答案:

答案 0 :(得分:0)

作为临时修复,通过向下/向上滚动一两个月来强制刷新,然后向后滚动。您应该看到刷新导致丢失的一周出现。

如果这确实是一个没有解决方法的错误,那么为弥补这一点而涉及的代码并不是微不足道的。我想它会涉及在你的UI线程上从包含的活动发布一个runnable方法,该活动将在渲染后分析视图以检查缺失的一周,然后以某种方式强制刷新视图(这将是“最简单的”在进入CalendarView本身的子类化并尝试以更精细的粒度控制其渲染之前,例如通过onMeasure或onLayout)。

更新:找到解决方法 - CalendarView Issues when Used Directly (Outside of a DatePicker)