依赖

implementation ‘com.android.support:design:28.0.0’

implementation ‘com.android.support:support-v4:28.0.0’ (ViewPager的依赖)

基本用法

详细用法demo:https://www.cnblogs.com/JohnTsai/p/4715454.html

属性设置

https://blog.csdn.net/solo_two/article/details/52103988

绑定标题的2种方式

方式1:tab.addTab(mBinding.tab.newTab().setText("标题"));
方式2:pagerAdapter复写了getPageTitle方法返回标题,这样必需要求tab与viewpager的item个数一样。
动态添加标题:

tab.setTabsFromPagerAdapter(pagerAdapter);
tab.setupWithViewPager(wrapContentViewpager);  /**动态添加需要这个方法刷新一下,不是动态的,一定不能加。*/     

让TabItem宽度填满TabLayout

tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
tabLayout.setTabMode(TabLayout.MODE_FIXED); 

选中某一个tab

bottomFuntionTab.getTabAt(0).select()

item背景颜色选择器设置

https://blog.csdn.net/u012045061/article/details/53423857
另外可以通过customview解决

内容item的padding值

app:tabPaddingStart=”10dp”
app:tabPaddingEnd=”10dp”

获取某一个tab的当前索引位置

@Override
public void onTabSelected(TabLayout.Tab tab) {
switchFragment(tab.getPosition());
}

修改文字图片间距或者修改item背景色,或者加消息提醒啥的。(自定义布局)

https://blog.csdn.net/zpswz/article/details/92834435

设置tabItem文字选中与未选中的颜色

bottomTabLayout.setTabTextColors();

或者在xml里自定义风格

    <style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
        <item name="tabIndicatorColor">?attr/colorAccent</item>
        <item name="tabIndicatorHeight">0dp</item>
        <item name="tabPaddingStart">12dp</item>
        <item name="tabTextColor">#aaa</item>
        <item name="tabPaddingEnd">12dp</item>
        <item name="tabSelectedTextColor">#f00</item>
    </style>

与ViewPager绑定之后,如何添加icon

bottomTab.getTabAt(0).setIcon(R.drawable.video_tab);

icon与文字的距离如何调整

https://www.jianshu.com/p/bfc77baf2a41

修改标题的字体

不通过自定义CustomView改变Tab的字体

通过分析Tablayout的源码,找到显示Tab标题的默认TextView,改变其字体即可。

Typeface typefaceSelect = CommonAppRuntime.getContext().getResources().getFont(R.font.select_dfpkinggothicgb_semibold_2);
        TextView tabTextView = (TextView) ReflectManager.getField(TabLayout.TabView.class,tab.view,"textView");
        if(tabTextView != null){
            tabTextView.setTypeface(typefaceSelect);
        }

通过自定义CustomView改变Tab的字体

https://cloud.tencent.com/developer/ask/78780

设置item之间的分割线

https://www.jianshu.com/p/fd42268d4cf3

 LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0);
        linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
        linearLayout.setDividerDrawable(ContextCompat.getDrawable(requireContext(),
                com.voyah.settings.sound.R.drawable.layout_divider_vertical));
        linearLayout.setDividerPadding(10);

踩坑

1) Caused by: Java.lang.IllegalArgumentException: You need to use a Theme.AppCompat theme (or descendant) with the design library.

参照:https://blog.csdn.net/solo_two/article/details/52103988

2) tab.setTabTextColors设置颜色,取消选中时颜色不正确的bug。

利用xml来完成:http://stackoverflow.com/questions/35597445/tablayouts-text-color-does-not-change-when-setting-the-selected-item-in-code

分类: 指示器

0 条评论

发表回复

您的电子邮箱地址不会被公开。