android 技术梳理知识图谱

什么!ViewPager 不好使了?ViewPager2 来了

2021-04-04  本文已影响0人  jkwen

前面刚整理过 ViewPager,觉得用着还行,接着又看到官方推荐用 ViewPager2 了,升级版香不香,来看看就知道了。

ViewPager2 想比较 ViewPager 而言的优势在于,

那用了 ViewPager2 要怎么和 TabLayout 结合呢?

布局调整

之前说过 ViewPager 与 TabLayout 在布局上的摆放可以有两种形式,而到了 ViewPager2,只能用一种平铺形式,并通过代码做关联。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <com.google.android.material.tabs.TabLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <androidx.viewpager2.widget.ViewPager2
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

代码关联

ViewPager 和 TabLayout 的代码关联用的是 TabLayout 的方法 setupWithViewPager(), 到了 ViewPager2 可不是这样,而是通过 TabLayoutMediator 类来做了个关联。

这个类归属在 com.google.android.material.tabs 路径下,并且要求 material 依赖版本要 1.1.0 及以上。

//用法比较简单,通过构造方法创建对象,入参有三个,
//分别是 tablayout, viewpager2, 还有一个回调接口实例
//通过这个回调方法可以设置 tab 的名称,样式等
TabLayoutMediator(dataBinding.categoryTabs, dataBinding.vpMessage) { tab, position ->
            tab.text = mPresenter.getPageTitle(position)
        }.attach()

适配器调整

原本 ViewPager 的适配器实现可以有三种方式,分别继承自 PagerAdapter,FragmentPagerAdapter,FragmentStatePagerAdapter。现在只有两个选择,RecyclerView.Adapter 替换原来的 PagerAdapter,Fragment 相关的适配器合并为一种,即 FragmentStateAdapter。

与原本的适配器有两点不同,

官方对 ViewPager 显然是准备放弃了,所以如果项目里还没用 ViewPager,可以直接用 ViewPager2 了,如果已经用了,怎么转到 ViewPager2 已经在上面列出来了。

我们还是尽早拥抱变化吧。

上一篇下一篇

猜你喜欢

热点阅读