【问题标题】:ViewPager's children's onDraw method are not always called?ViewPager 的children 的onDraw 方法不总是被调用?
【发布时间】:2015-03-13 08:04:33
【问题描述】:

我正在使用 ViewPager 来显示自定义视图的列表。我的自定义视图扩展了 View 并覆盖了 onDraw() 方法。除了我的绘图代码之外,我的 onDraw() 方法还包含一个日志语句,因此我可以调试 onDraw() 方法是否被调用。它只是偶尔调用。例如,如果我在两个页面之间来回滑动,通常不会调用 onDraw() 方法。 ViewPager 是否在做某种缓存?有没有办法确保每次自定义视图都因为可见而调用自定义视图的 onDraw() 方法?

【问题讨论】:

    标签: android android-viewpager


    【解决方案1】:

    ViewPager 有一个名为 offscreen page limit 的属性,它定义了当前页面左侧和右侧应该保留多少页面(即在滑动时不被破坏)。您可以使用 ViewPager 的 setOffscreenPageLimit(int limit) 方法更改其值。默认情况下,它设置为 1,因此一开始应该创建 2 个页面(第一个页面和右侧的一个页面),因此您应该注意到 onDraw 方法的两次调用。恐怕无法通过更改提到的限制来实现您想要的行为(每次滑动时调用 onDraw 方法),因为 ViewPager 不允许将偏移页面限制设置为 0(设置不会导致错误,但在那个使用大小写默认值)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多