TabLayout的学习

首先,本文主要就是在使用TabLayout与ViewPager完成Tab导航,进一步学习下TabLayout。

一、TabLayout的关键API

1.setupWithViewpager(ViewPager viewPager)

该方法完成了TabLayout与ViewPager的关联,该方法的源码也是非常清晰易读(如下)。

setupWithViewPager方法源码

该方法主要做了几件事:

(1)获取ViewPager的adapter,该adapter可以设置与ViewPager同步的tab标题。

(2)利用ViewPager的回调接口,采用的是TabLayoutOnPageChangeListener,处理当viewpager滑动改变时,TabLayout中的tab也与之同步改变,

(3)TabLayout的回调接口,这个回调接口中一个重要的参数就是viewpager,这样当滑动选择或点击选中tab时,ViewPager也能同步对应变化。

(4)根据当前的viewpager选中项,来设置TabLayout的当前选中tab。

二、TabLayout的内部类:Tab、TabView、SlidingTabStrip

1、Tab类是对Tab最基础的抽象,最基础的当然是设置Tab的标题,也支持设置Tab的图标(setIcon方法)。

2、TabView类是对Tab类进行一个二次封装。

3、SlidingTabStrip类主要处理指示线的,即Tab的下划线(随着Tab的滑动而滑动)。

三、TabLayout的Tab滚动

1、从源码中看到主要就是在animateToTab(int newPosition)方法中完成的。

Tab的滚动主要就是通过ValueAnimatorCompat(属性动画,做了兼容处理),通过属性动画改变x轴的值,然后通过scrollTo方法实现滚动(TabLayout继承自HorizontalScrollView)。

最后,文章写得还是很简单,自己要坚持写,争取写得更好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容