> 文章列表 > Android 一屏4个pager,各自可滑动,如何实现

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

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() {@Overridepublic int getCount() {return pagerList.size();}@Overridepublic boolean isViewFromObject(@NonNull View view, @NonNull Object object) {return view == object;}@NonNull@Overridepublic Object instantiateItem(@NonNull ViewGroup container, int position) {RecyclerView pager = pagerList.get(position);container.addView(pager);return pager;}@Overridepublic 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.ViewPagerandroid: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;}@Overridepublic int getCount() {return fragments.size();}@Overridepublic 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 内部实现滑动逻辑即可。