Android 一屏4个pager,各自可滑动,如何实现

Android 一屏4个pager,各自可滑动,如何实现

可以将每个 Pager 内部嵌套一个可滑动的 ViewGroup(如 RecyclerView 或 ViewPager),然后使用一个容器(如 ViewPager)来盛放每个 Pager。这样,每个 Pager 内部的 ViewGroup 可以独立地实现滑动,同时整个容器(ViewPager)也可以实现滑动切换不同的 Pager。

下面是一个简单的示例代码:

// 假设有四个 Pager,分别对应四个 RecyclerView
RecyclerView p1 = new RecyclerView(this);
RecyclerView p2 = new RecyclerView(this);
RecyclerView p3 = new RecyclerView(this);
RecyclerView p4 = new RecyclerView(this);

// 设置每个 RecyclerView 的布局和数据适配器

// 将每个 Pager 放入一个集合中便于管理
List<RecyclerView> pagerList = new ArrayList<>();
pagerList.add(p1);
pagerList.add(p2);
pagerList.add(p3);
pagerList.add(p4);

// 创建并配置 ViewPager
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(new PagerAdapter() {
    @Override
    public int getCount() {
        return pagerList.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        RecyclerView pager = pagerList.get(position);
        container.addView(pager);
        return pager;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        RecyclerView pager = pagerList.get(position);
        container.removeView(pager);
    }
});

在这个示例代码中,我们创建了四个 RecyclerView 作为 Pager,并将它们放入一个集合中。然后,我们使用一个 ViewPager 容器来盛放这四个 Pager,同时使用 PagerAdapter 来将 ViewPager 和 Pager 进行关联。在 PagerAdapter 的 instantiateItem 和 destroyItem 方法中,我们将 Pager 添加和移除到 ViewPager 容器中。

这样,就实现了一屏四个 Pager,各自可滑动的效果。您只需要在每个 Pager 内部实现滑动逻辑即可。

那如何使用一个 ViewPager 容器来盛放这四个 Pager呢?

当然,您可以使用一个默认的 ViewPager 容器来盛放这四个 Pager。这种做法与使用单独的ViewPager容器的方法差别不大,只是需要一些额外的配置。

假设您已经定义好了四个 Pager,分别对应四个 Fragment 或其他 View。现在,您可以定义一个默认的 ViewPager 容器,如下所示:

<androidx.viewpager.widget.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

接下来,您需要定义一个 PagerAdapter 来将这个 ViewPager 容器和四个 Pager 进行关联,如下所示:

public class MyPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> fragments;

    public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }
}

在这个 PagerAdapter 中,我们传入了一个 Fragment 的集合,其中包含了我们要展示的四个 Pager(如果您使用其他类型的 View,可以适当修改)。在 getItem 方法中,我们根据位置返回对应的 Fragment。

最后,在您的 Activity 或 Fragment 中,您需要将这个 PagerAdapter 和 ViewPager 容器进行关联,如下所示:

ViewPager viewPager = findViewById(R.id.view_pager);
List<Fragment> fragments = new ArrayList<>();
fragments.add(new MyFragment1());
fragments.add(new MyFragment2());
fragments.add(new MyFragment3());
fragments.add(new MyFragment4());
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), fragments);
viewPager.setAdapter(adapter);

在这个示例代码中,我们先获取到了 ViewPager 容器,然后创建了一个 Fragment 的集合,其中包含了我们要展示的四个 Pager。接着,我们创建了一个 PagerAdapter,并将它和 ViewPager 容器进行关联。最后,我们将创建好的 PagerAdapter 设置给 ViewPager 容器。

这样,就实现了一屏四个 Pager,各自可滑动的效果。您只需要在每个 Pager 内部实现滑动逻辑即可。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇

)">
下一篇>>