android ViewPager2 setOffscreenPageLimit()似乎不起作用

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

我在我的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;
    }
}
cgvd09ve

cgvd09ve1#

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

相关问题