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