目录
依赖
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 条评论