编程语言
首页 > 编程语言> > Android 控件-TabLayout与ViewPager2-联合使用出现tab消失问题及其源码分析和解决方式

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