Android 控件-TabLayout与ViewPager2-联合使用出现tab消失问题及其源码分析和解决方式
作者:互联网
目录
一、前言
com.google.android.material.tabs.TabLayout
androidx.viewpager2.widget.ViewPager2
ViewPager2本质上是一个RecyclerView,只是被重新封装了。
二、问题
TabLayout与ViewPager2进行联合使用,做一个关联滑动切换页面的效果时,会出现tab均不显示文字,但是可以点击。
代码实现
因为TabLayout里只有和ViewPager的进行相关实现的接口,此时要联合使用ViewPager2则需要使用到TabLayoutMediator对TabLayout与ViewPager2进行attach(其实TabLayout和ViewPager联合使用也会有本文描述的问题存在,后面有机会再写一篇文章:)
new TabLayoutMediator(homeTabLayout, homeViewPager, new
TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
}
}).attach();
此时TabLayout与ViewPager2已经关联成功,并且ViewPager2左右滑动,TabLayout也能响应。TabLayout点击,ViewPager2也能响应,只是TabLayout的item无文字显示,点击有反馈效果。
三、源码分析
待后续补充
四、解决
1.直接在TabConfigurationStrategy的回调onConfigureTab里设置Text
new TabLayoutMediator(homeTabLayout, homeViewPager, new
TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
tab.setText(titles.get(position));
}
}).attach();
2.在attach方法之后,强制对Tab设定Text值
homeTabLayout.getTabAt(0).setText(R.string.xxx);
3.解决方式应该还有,待后续补充
标签:控件,TabLayoutMediator,attach,源码,tab,ViewPager2,new,TabLayout 来源: https://blog.csdn.net/johnwang7/article/details/118606085