ViewPager的孩子的onDraw方法并不总是被调用?

时间:2015-03-12 23:24:14

标签: android android-viewpager

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

1 个答案:

答案 0 :(得分:0)

ViewPager具有称为屏幕外页面限制的属性,该属性定义应当保留当前页面左侧和右侧的页数(即,在滑动时不会被销毁)。您可以使用ViewPager的setOffscreenPageLimit(int limit)方法更改其值。默认情况下,它设置为1,因此在开始时应该创建2个页面(第一个和右侧的一个),因此您应该注意到两个onDraw方法的调用。我担心通过更改上述限制无法实现您想要的行为(在每次滑动时调用onDraw方法),因为ViewPager不允许将偏移页面限制设置为0(设置不会导致错误,但在这种情况下使用默认值。