Android 实现多个 Fragment 左右滑动

作者:vkvi 来源:ITPOW(原创) 日期:2017-3-14

比如网页新闻,一个 Tab 就是一个栏目,可以左右滑动。我们就可以用 Fragment 实现类似的效果。

实现

Android Studio 中有这样的模板,创建 Activity 时选择最后一个 Tabbed Activity 即是。

选择 Navigation Style 可以确定几种切换样式。

Tabbed Activity

原理

  • Fragment 决定每一个 Tab 对应的布局文件,以及其代码。
  • FragmentPagerAdapter 作适配。
  • 控件 ViewPager 通过 setAdapter() 与 FragmentPagerAdapter 关联。
  • 控件 TabLayout 通过 setupWithViewPager() 与 ViewPager 关联。

代码

代码基本是由创建的代码形成,我作了删减、改名,便于理解。

其中 onCreateView 我改为读取不同的布局文件,并且我们可以对不同的布局文件写不同的程序逻辑代码,如果逻辑代码太长,可参考:将 Activity 拆分为多个类

问:每次滑动都会调用 onCreateView 吗?

答:只有滑到不存在过已经消亡的 Fragment 时,才会调用 onCreateView。这东西始终保持当前 Fragment 和前一个 Fragment 不消亡。前一个 Fragment 是指滑向当前 Fragment 的 Fragment,可能在当前 Fragment 的左边,也可能在右边。

举例:

假如有 A、B、C 三个 Fragment。

  • 刚打开 APP 时:自动调用 onCreateView() 创建 A、B 两个 Fragment。
  • 当由 A 滑向 B 时:A 续存、B 续存。
  • 当由 B 滑向 C 时:A 消亡,B 续存,调用 onCreateView 创建 C。
  • 当由 C 滑向 B 时:C 续存,B 续存。
  • 当由 B 滑向 A 时:C 消亡,B 续存,调用 onCreateView 创建 A。

如何让程序来滑

2 是指第 2 个 Tab,不是指第 3 个。

相关阅读

相关文章