正在发生的事情:前两个ViewPager页面加载得很好(ViewPager会自动从当前页面加载+ -1)。当您滚动浏览这些页面时,下一页面不会显示。以下问题的GIF演示。
调试信息:正在实例化 页面(请参阅下面的代码)并成功添加到ViewPager ArrayList<ItemInfo>mItems
(通过日志消息确认)。我使用debug = true set({a {}}在aosp中重新编译了android.support.v4
库,它显示了一切正常工作除外:
加载前两个视图后,将停止调用ViewPager中的onLayout和onMeasure方法。这意味着其他页面是黑色的,因为它们从未被测量和安排,因为它们应该是。我尝试在不同的点添加不同的requestLayout()调用以强制布局树刷新无效。
背景:我通过inflater.inflate实例化ViewPager,并通过view.findViewById(R.layouy.myid)找到。它直接替换旧的Gallery视图,为了测试目的,PagerAdapter instantiateItem(集合,位置)只是这样做:
mmm frameworks/support/v4/
有什么想法吗?在我看来,像PageView的父母中的某些神秘设置会以某种方式禁用onLayout PageView
答案 0 :(得分:9)
发现我的问题。在我视图的父级的父级中,有人将LinearLayout
子类化,并在不调用requestLayout()
的情况下覆盖super.requestLayout()
。
这打破了我的视图层次结构的刷新,并阻止onMeasure和onLayout在我的ViewPager上被调用。没有测量和布局页面,它们在ViewPager中显示为空白。
希望有一天能帮助其他人。我确实花了很长时间才弄明白。
专业提示: android-sdk / tools / hierarchyviewer 令人难以置信。谢谢Android团队。每个人都应该至少运行一次,它在调试和设计任何UI时都是非常宝贵的。