我在我的 Android 应用程序中使用 ViewPager2
让用户左右滚动(当前)2 个页面。看起来不错,除了一个小细节。
我正在使用 setOffscreenPageLimit(2)
因为我希望两个页面都准备好立即滚动。但是,它似乎没有做任何事情。当我第一次从第 1 页滚动到第 2 页时,第二页的布局在完全选中之前不会出现(即过渡动画完成)。这看起来很不和谐,并且完全没有使用 ViewPager2
进行平滑滚动的意义。
在第 2 页首次加载后,来回滚动正常工作,同时保留两个页面以实现平滑过渡。
有人可以复制吗?这过去与 ViewPager
一起工作得很好。
下面是我如何设置我的 ViewPager2
:
_viewPager2FragmentHolder = getActivity().findViewById(R.id.viewPager2TargetFragmentHolder);
_viewPager2FragmentHolder.setOffscreenPageLimit(2);
_viewPager2FragmentHolder.setAdapter(new TargetFragmentStateAdapter(this));
...这是我的适配器类:
public class TargetFragmentStateAdapter extends FragmentStateAdapter
{
public TargetFragmentStateAdapter(@NonNull Fragment fragment)
{
super(fragment);
}
@NonNull
@Override
public Fragment createFragment(int position)
{
switch (position)
{
case 0:
return new TargetCoordinatesFragment();
case 1:
return new TargetDirectionsFragment();
default:
return new Fragment();
}
}
@Override
public int getItemCount()
{
return 2;
}
}
最佳答案
Set the number of pages that should be retained to either side of the currently visible page(s). Pages beyond this limit will be recreated from the adapter when needed.
因此,您应该将其设置为 1 以获得您想要的结果。 如果屏幕外页面似乎仅在被选中时才“加载”,则意味着适配器或 pageSelectionCallback 做错了什么。
关于android - ViewPager2 setOffscreenPageLimit() 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62178149/