当前位置:   article > 正文

Android ViewPager2 & TabLayout(1),10年阿里开发架构师经验分享

Android ViewPager2 & TabLayout(1),10年阿里开发架构师经验分享

使用ViewPager2 绑定RecyclerView Adapter

class ViewPager2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.layout_view_pager_demo)
viewpager.adapter = DemoViewPagerAdapter()
}
}

TabLayout 无法与 ViewPager2绑定

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

但是在StackOverFlow中找到了解决方案,我们可以使用TabLayoutMediator实现TabLayout与ViewPager2的绑定。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

TabLayoutMediator不能直接使用,所以需要拷贝一份出来,根据代码注释可知TabLayoutMediator只能在初始化之后才能调用attach方法:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

class ViewPager2Activity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_view_pager2)

// Must be declared before TabLayoutMediator.attach()
viewpager.adapter = DemoViewPagerAdapter()
TabLayoutMediator(tabLayout, viewpager, object : TabLayoutMediator.OnConfigureTabCallback {
override fun onConfigureTab(tab: TabLayout.Tab, position: Int) {
// Styling each tab here
tab.setText(“Tab $position”)
}
}).attach()
}
}

TabLayoutMediator.OnConfigureTabCallback是一个用户友好的方法,在初始化TabLayout.Tab或数据更改是调用:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RecyclerView adapter Vs FragmentStateAdapter

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ViewPager2可以接受RecyclerView Adapter 和 FragmentStateAdapter,两者的区别就是RecyclerView Adapter inflate View,而FragmentStateAdapter inflate Fragment。

当ViewPager2中的每个页面用于显示静态信息时,当必须考虑页面的生命周期时,可以使用FragmentStateAdapter。

集成TabLayout

TabLayout与旧版ViewPager集成在一起很简单,只需将其添加为ViewPager的子项,并按设置layout_gravity属性就可以了。

<android.support.v4.view.ViewPager
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<android.support.design.widget.TabLayout
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
android:layout_gravity=“top” />
</android.support.v4.view.ViewPager>

然而,ViewPager2不接受TabLayout作为子View绑定。
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

结论

  1. ViewPager2使用RecyclerView实现,使编码更加容易
  2. ViewPager2不支持与TabLayout直接绑定,可以使用TabLayoutMediator来实现。
  3. ViewPager2通过adapter来控制每页显示的内容,可以使用RecyclerView Adapter或者是FragmentStateAdapter
  4. ViewPager2不允许添加任何子View,TabLayout必须与ViewPager2一起放在另一个ViewGroup中。

扩展阅读

  1. ViewPager2 with pretty page margin
  2. 4-steps-to-android-dot-tabitem
  3. android-tablayout-and-tabitem

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

总结

其实要轻松掌握很简单,要点就两个:

  1. 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。 (视频优势是互动感强,容易集中注意力)

你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。

要完整版的朋友,【点这里可以看到全部内容】。**

[外链图片转存中…(img-Q5u2sduY-1711293772525)]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/450062
推荐阅读
相关标签
  

闽ICP备14008679号