Android 设置TabLayout的下划线宽度

1.背景

    由于最近需要实现一个功能,需要用到TabLayout作为标题,切换标题时,底下填充不同的frament。但是UI设计对下划线有要求,需要设置下划线的宽度和高度。最终实现的效果图如下:

加载中

2.TabLayout介绍

    TabLayout大概分为三个时代,刚开始的时候:

    2.1 TabLayout继承自LinearLayout,在android.widget包下。

    2.2 TabLayout继承自HorizontalScrollView,在android.support.design.widget包下,后来发现低版本的也需要用到此控件,所以谷歌退出了Support包。

    2.3 TabLayout继承自HorizontalScrollView,在com.google.android.material.tabs包下,后来谷歌推出Material Design的时候更新了一波

    后来谷歌感觉这些support包管理起来太麻烦,所以更新了一波androidx,将所有的support的,比如说v4啊,v7啊这些包整合起来了,所以也不要怕升级到androidx,整体用起来还是比较顺手的,但是,还有坑,比如这次的控件,给更新没了,哭都没地方哭。

3.使用

布局文件:activity_main.xml




    

布局文件Tablayout的item:tab_item.xml




    

    
    

如果想自定义Tablayout的样式可以在Style文件中定义:

    

如果不需要的话,只是对文字有要求可以自定义myTabTextAppearance:

    
    

代码使用:

    private String[] mTitles = {"标题1", "标题2", "标题3", "标题4"};

    private void initView() {
        mTableLayout = (TabLayout) findViewById(R.id.mTableLayout);

        // 添加tab
        for (int i = 0; i < mTitles.length; i++) {
            TabLayout.Tab tab = mTableLayout.newTab();
            // 设置Tab的自定义View
            tab.setCustomView(R.layout.tab_item);
            // 添加Tab
            mTableLayout.addTab(tab);

            // 设置tab_item 里的文字
            TextView textView = (TextView) tab.getCustomView().findViewById(R.id.tab_text);
            textView.setText(mTitles[i]);//设置tab上的文字
        }
    }

4.遇到问题

    当TabLayout标签太多时,Tab显示拥挤,导致某些标签显示两行,效果不好看

    解决办法:在布局文件中改控件添加这个属性  app:tabMode="scrollable"

    添加完成之后,tablayout的标签,就可以滑动了,也不会被折叠起来

 

参考:

    1.https://blog.csdn.net/qiao0809/article/details/53506008

    2.https://blog.csdn.net/baidu_34120295/article/details/81254304

你可能感兴趣的:(android,工具,android,tablayout)