android - 防止 ViewPager 破坏屏幕外 View

标签 android android-fragments android-viewpager

我有一个 ViewPager 连接到一个显示三个 fragment 的 FragmentPagerAdapter。当 ViewPager 从当前位置滑动不止一次时,它似乎会破坏托管 fragment 的 View 。

这些 View 都是简单的列表,完全不需要这种优化,所以我想禁用它。这会导致一些视觉问题,因为列表应用了布局动画,并且这些动画在它们被销毁和重新创建后会被重放。它还每次显示滚动条介绍动画(滚动条短暂可见以指示可以滚动),这可能会分散注意力,并且在此过程中会丢失用户当前的滚动位置。

在第一次滑动之前它也不会加载第三个 fragment ,这是有问题的,因为每个 fragment 都处理自己的服务调用,我希望在 Activity 加载时同时触发所有三个 fragment 。延迟第三次服务调用并不理想。

有什么方法可以说服 ViewPager 停止这种行为,只将我所有的 fragment 保存在内存中?

最佳答案

revision 4在支持包中,向 ViewPager 添加了一个方法,该方法允许您指定要使用的屏幕外页面数,而不是默认值 1。

在你的情况下,你想指定 2,这样当你在第三页时,第一页不会被破坏,反之亦然。

mViewPager = (ViewPager)findViewById(R.id.pager);
mViewPager.setOffscreenPageLimit(2);

关于android - 防止 ViewPager 破坏屏幕外 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8348707/

相关文章:

android - 与删除 fragment 混淆

java - RecyclerView 能否与其余 fragment 布局一起滚动?

android - 使用没有 fragment 的页面适配器

android - 如何使用 JSON 对象传递 JSON 数组

java - 将项目添加到 ArrayAdapter<String>

android - 如何在android中创建虚拟sd卡

android - 填充在 ImageButton 上不起作用

android - 删除默认标题栏

Android TabLayout PagerAdapter 不显示第一个选项卡 fragment

java - 空列表 : ArrayAdapter in Fragment