发生了什么:前两个 ViewPager 页面加载良好(ViewPager 自动从当前页面加载 +-1)。当您滚动过去时,不会显示下一页。下面问题的 GIF 演示。
调试信息:页面正在实例化(参见下面的代码)并成功添加到 ViewPager ArrayList<ItemInfo>mItems
(通过日志消息确认)。我android.support.v4
使用 debug=true 设置(mmm frameworks/support/v4/
在 aosp 中)重新编译了库,它显示一切正常,除了:
ViewPager 中的 onLayout 和 onMeasure 方法在前两个视图加载后停止调用。这意味着其他页面是黑色的,因为它们从未按应有的方式进行测量和排列。我尝试在不同的点添加不同的 requestLayout() 调用以强制布局树刷新无济于事。
背景:我有一个通过 inflater.inflate 实例化的 ViewPager,并通过 view.findViewById(R.layouy.myid) 找到。它直接替换了旧的 Gallery 视图,出于测试目的,PagerAdapter instantiateItem(collection, position) 只是这样做:
@Override
public Object instantiateItem(View collection, final int position) {
final TextView tv = new TextView(collection.getContext());
tv.setText("Looking at page " + position);
tv.setTextColor(Color.WHITE);
tv.setBackgroundColor(Color.rgb( (int)(Math.random()*100), (int)(Math.random()*100), (int)(Math.random()*100)));
tv.setTextSize(22);
((ViewPager) collection).addView(tv);
return tv;
}
有任何想法吗?在我看来,PageView 的父母中的一些神秘设置以某种方式禁用了 onLayout PageView