android ViewPager2 setOffscreenPageLimit()似乎不起作用

fzwojiic  于 2023-06-20  发布在  Android
关注(0)|答案(1)|浏览(407)

我在我的Android应用程序中使用ViewPager2来让用户左右滚动(当前)2个页面。一切都很好,除了一个小细节。
我使用setOffscreenPageLimit(2)是因为我希望两个页面都能立即滚动。然而,它似乎没有做任何事情。当我第一次从第1页滚动到第2页时,第二页的布局直到完全选中才出现(即过渡动画结束)。这看起来相当不和谐,并击败了点平滑滚动与ViewPager2在所有。
第2页首次加载后,前后滚动正常工作,同时保留两个页面,允许平滑过渡。
有人能复制这个吗?这在ViewPager上可以正常工作。
下面是我如何设置ViewPager2

  1. _viewPager2FragmentHolder = getActivity().findViewById(R.id.viewPager2TargetFragmentHolder);
  2. _viewPager2FragmentHolder.setOffscreenPageLimit(2);
  3. _viewPager2FragmentHolder.setAdapter(new TargetFragmentStateAdapter(this));

...下面是我的适配器类:

  1. public class TargetFragmentStateAdapter extends FragmentStateAdapter
  2. {
  3. public TargetFragmentStateAdapter(@NonNull Fragment fragment)
  4. {
  5. super(fragment);
  6. }
  7. @NonNull
  8. @Override
  9. public Fragment createFragment(int position)
  10. {
  11. switch (position)
  12. {
  13. case 0:
  14. return new TargetCoordinatesFragment();
  15. case 1:
  16. return new TargetDirectionsFragment();
  17. default:
  18. return new Fragment();
  19. }
  20. }
  21. @Override
  22. public int getItemCount()
  23. {
  24. return 2;
  25. }
  26. }
cgvd09ve

cgvd09ve1#

来自官方文档:https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2#setOffscreenPageLimit(int)
设置应保留在当前可见页面两侧的页数。超出此限制的页面将在需要时从适配器重新创建。
因此,您应该将其设置为1以获得您想要的内容。如果屏幕外页面似乎只有在被选中时才被“加载”,这意味着适配器或pageSelectionCallback发生了错误。

相关问题