android - ViewPager2 setOffscreenPageLimit() 似乎不起作用

标签 android android-viewpager

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

最佳答案

来自官方文档:https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2#setOffscreenPageLimit(int)

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/

相关文章:

android - 未从 Playstore 下载 apk 扩展文件

android - 完成 Neura 身份验证后未收到 onActivityResult

Android 模拟器无法访问我工作站上可用的网络

java - 从 ViewPager fragment 获取 Google map

android - 在父 Activity 中访问 fragment viewPager

java - 如何在 Alert Dialog Builder 中将文本居中?

android - 应为名称,但在第 1 行第 99 列路径 $[0].apkInfo.versionName 为 STRING

android - 无法更改 fragment 的标签

android - 可以在不需要使用 AppCompat 主题的情况下使用 ViewPager 吗?

java - fragment 中的 ViewPager + 适配器 => 延迟滑动