我们现在常用的底部或者顶部导航栏很多都是使用TabLayout+ViewPager+Fragment实现的,最近有空分析一下TabLayout和ViewPager两者之间关联的原理
主要就是一行代码实现两者之间的关联:tabLayout.setupWithViewPager(viewPager);
现在来看下实现的原理:经过两次重载走到下面的方法内部
private void setupWithViewPager(@Nullable ViewPager viewPager, boolean autoRefresh, boolean implicitSetup) {
//清除之前的监听器
if (this.viewPager != null) {
if (this.pageChangeListener != null) {
this.viewPager.removeOnPageChangeListener(this.pageChangeListener);
}
if (this.adapterChangeListener != null) {
this.viewPager.removeOnAdapterChangeListener(this.adapterChangeListener);
}
}
if (this.currentVpSelectedListener != null) {
this.removeOnTabSelectedListener(this.currentVpSelectedListener);
this.currentVpSelectedListener = null;
}
if (viewPager != null) {
this.viewPager = viewPager;
if (this.pageChangeListener == null) {
this.pageChangeListener = new TabLayout.TabLayoutOnPageChangeListener(this);
}
this

本文探讨了Android中TabLayout和ViewPager如何通过设置监听器实现联动,详细分析了pageChangeListener、currentVpSelectedListener、adapterChangeListener在两者关联中的作用,以实现页面滑动和Tab切换的同步。
最低0.47元/天 解锁文章
421

被折叠的 条评论
为什么被折叠?



