【发布时间】:2013-05-12 20:27:27
【问题描述】:
我会尽量让问题简短明了。
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
当前项为 0 和 1 时返回子视图。但如果当前项为 2,则返回 null 。这是为什么呢?
edit:让我重新表述一下自己。如何在任何给定项目位置获取 ViewPager 的子视图?
【问题讨论】:
我会尽量让问题简短明了。
View activeView = mViewPager.getChildAt(mViewPager.getCurrentItem());
当前项为 0 和 1 时返回子视图。但如果当前项为 2,则返回 null 。这是为什么呢?
edit:让我重新表述一下自己。如何在任何给定项目位置获取 ViewPager 的子视图?
【问题讨论】:
事实证明getChildAt(int) 不是正确的方法。我所做的是检索 ViewPager 中使用的适配器并从那里找到我的视图:
adapter = mViewPager.getAdapter();
Fragment fragment = adapter.getItem(mViewPager.getCurrentItem());
View activeView = fragment.getView();
如前所述,除非通过setOffscreenPageLimit() 另行指定,否则 viewPager 将仅包含当前子项和相邻子项(currentItem() +/- 1)
【讨论】:
您的视图寻呼机适配器最多可容纳 2 个页面,即 2 个视图/片段,其余的将被回收。在其他情况下,您没有提到的是您可能在 ViewPager 中有 2 个页面/视图。
请看mViewPager.setOffscreenPageLimit()
【讨论】:
将标签添加到 Viewpager 返回视图。
以下链接将为您提供帮助: https://stackoverflow.com/a/20186828/1271891
【讨论】:
在我努力寻找装饰 android 视图的方法期间,我想我为我在my blog 中记录的 OP 问题定义了替代解决方案。我正在链接到它,因为代码似乎有点太多,无法在此处包含所有内容。
我提出的解决方案:
null。(这个问题对this one很简单,我在里面发了the same answer)。
【讨论】:
应该有多少子视图?
ViewPager 也不会同时加载所有子项。只有它显示的一个和下一个。您可以使用mViewPager.setOffscreenPageLimit(),例如 3 或 4,将更多项目“预加载”到 viewpager。
【讨论】: