我将尽可能地让问题简洁明了。
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
如果当前项为 0 或 1,则返回子视图,但如果当前项为 2,则返回 null
。为什么会这样呢?
编辑:让我重新表达一下。如何获取 ViewPager 在任何给定项位置的子 View?
我将尽可能地让问题简洁明了。
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
如果当前项为 0 或 1,则返回子视图,但如果当前项为 2,则返回 null
。为什么会这样呢?
编辑:让我重新表达一下。如何获取 ViewPager 在任何给定项位置的子 View?
原来getChildAt(int)
并不是正确的方法。我的做法是获取ViewPager中使用的适配器,然后从适配器中找到我的视图:
事实证明,getChildAt(int)
不是正确的方法。我所做的是检索ViewPager中使用的适配器,然后从那里找到我的视图:
adapter = mViewPager.getAdapter();
Fragment fragment = adapter.getItem(mViewPager.getCurrentItem());
View activeView = fragment.getView();
如前所述,ViewPager 只包含当前子级和相邻的子级(currentItem() +/- 1),除非通过 setOffscreenPageLimit()
进行其他指定。
给Viewpager添加标签并返回视图。
以下链接将对您有所帮助: https://dev59.com/PmQo5IYBdhLWcg3wE8G2#20186828
子视图应该有多少个?
另外,ViewPager并不会同时加载所有子视图。它只会加载当前正在显示的和下一个子视图。您可以使用mViewPager.setOffscreenPageLimit()
来预加载更多项目到ViewPager中,例如3或4。