public static void setTabLayoutWidth(int left, int right, TabLayout tabLayout, Activity Activity) {try {Field slidingTabIndicatorField;Field textViewField;// 拿到tabLayout的slidingTabIndicator属性if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {slidingTabIndicatorField = tabLayout.getClass().getDeclaredField("slidingTabIndicator");} else {slidingTabIndicatorField = tabLayout.getClass().getDeclaredField("mTabStrip");}slidingTabIndicatorField.setAccessible(true);LinearLayout mTabStrip = (LinearLayout) slidingTabIndicatorField.get(tabLayout);for (int i = 0; i < mTabStrip.getChildCount(); i++) {View tabView = mTabStrip.getChildAt(i);//拿到tabView的mTextView属性if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {textViewField = tabView.getClass().getDeclaredField("textView");} else {textViewField = tabLayout.getClass().getDeclaredField("mTextView");}textViewField.setAccessible(true);TextView mTextView = (TextView) textViewField.get(tabView);tabView.setPadding(0, 0, 0, 0);// 因为想要的效果是字多宽线就多宽,所以测量mTextView的宽度int width = mTextView.getWidth();if (width == 0) {mTextView.measure(0, 0);width = mTextView.getMeasuredWidth();}// 设置tab左右间距,注意这里不能使用Padding,因为源码中线的宽度是根据tabView的宽度来设置的LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();params.width = width;params.leftMargin = left;params.rightMargin = right;tabView.setLayoutParams(params);tabView.invalidate();}} catch (NoSuchFieldException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}
app:tabIndicatorFullWidth="false"设置为false 就是指示线跟tabitem的文字一样宽 

要设置为true 才能设置上边的才有效

有同学肯定好奇为啥上边还有版本判断

因为sdk大于等于28 是 slidingTabIndicator这个 小于的就是  mTabStrip  因为sdk版本都有差异 找不到的话 就会 Exception

然后就尴尬了

如果这个不能满足你的需求  建议看下这个TabLayout

传送门

这是根据我日常遇到的问题分享出来 希望能解决各位同学的问题 不许勿喷!白白

TabLayout 设置指示器宽度问题相关推荐

  1. 指定TabLayout的指示器宽度

    引言: 关于TabLayout的指示器宽度,无法进行指定,默认宽度为所在TabView的宽度.虽然可以通过setTabIndicatorFullWidth(false)使指示器宽度为标题长度,但是还是 ...

  2. TabLayout设置指示器的宽度

    TabLayout的指示器的高度.颜色都可以设置,但是宽度需要自己来实现 在TabLayout view初始化后,设置 /** * @date:2017/11/9/009 * @author:平sir ...

  3. Android TabLayout修改指示器宽度方案汇总

    目录 前言 TabLayout的视图结构 TabLayout绘制指示器的过程 1.从获取tabSelectedIndicator边界着手 1.1 默认情况下的指示器宽度 1.2 tabIndicato ...

  4. 代码动态设置tabLayout 导航条宽度

    项目用中用到了tabLayout 切换页面,但是他下面的导航栏宽度不符合要求,于是研究了半天. 不多说直接贴代码. /** * 设置tabLayout 导航条宽度 */ public void set ...

  5. TabLayout的指示器和文字的边距

    文章目录 一.前言 二.依赖配置 三.TabLayout的简单使用 四.自定义Tab内容 五.修改指示器离文本的距离 六.修改指示器的宽度 七.复杂的指示器效果 八.参考链接 一.前言 本文主要用于介 ...

  6. Tablayout设置间距

    Tablayout设置item间距 方法:1 /*** 设置tablayout下划线根据文字宽度而改变* @param tabLayout* @param padding*/public void s ...

  7. TabLayout自定义指示器及样式

    一,自定义指示器下标 效果图如下: 1,新建一个名为:layer_tab_indicator的layer-list文件,然后定义想要的样式,其中bitmap 设置成需要的图片格式,也可以根据需求在it ...

  8. 怎么定义html的整体的宽度,html怎么设置最大宽度

    html中,可以利用max-width属性来设置最大宽度,只需使用style属性给元素添加"max-width:length|%"样式即可:值"length"可 ...

  9. html设置表格宽度最小,css如何设置表格宽度?

    css设置表格宽度的方法:直接使用css设置表格table标签的width属性即可设置表格宽度,浏览器会自动按照td宽度的比例来调整td宽度. css设置表格宽度: 例1:Table的宽度为600px ...

最新文章

  1. OCIEnvCreate failed with return code -1 but error message text was not available with ODP.net
  2. 使用 FRP 反向代理实现 Windows 远程连接
  3. geotools学习(一)IntelliJ IDEA搭建快速入门示例.pdf
  4. lvs+keepalived+nginx+tomcat高可用高性能集群部署
  5. JVM性能调优监控工具
  6. 马尔科夫决策过程(MDP) : BlackJack (MC-On Policy)
  7. 雷电模拟器android文件夹在哪,雷电模拟器共享文件夹怎么用_雷电模拟器共享文件夹功能使用方法介绍_3DM手游...
  8. windows下cfree5中%d输出浮点数的问题
  9. 动态规划练习一之最低通行费
  10. 优秀工程师应该具备哪些素质_作为现代工程师应具备的素养
  11. Latex制作beamer幻灯片、写论文的基本语句
  12. 利用阿里云服务器制作一个浪漫的表白网页
  13. 学习自我管理和自我营销
  14. typhon字符串压缩
  15. 计算机文字转表格,Word怎么把文字转换成表格 30秒搞定
  16. PHP 文本式留言板源码
  17. 国风雅韵之琴瑟(页面文章不知道放哪,于是放CSDN当跳转链接系列QWQ Sorry辣~)
  18. 传统单节点网站的 Serverless 上云
  19. 计算机启动时 需换电池bells,关于笔记本电脑开机提示请考虑更换电池问题的解决步骤...
  20. c学习笔记 文件输入/ 输出 20210314

热门文章

  1. 《MySQL高级篇》八、索引优化与查询优化
  2. View系列 (三) — Measure 流程详解
  3. iPad Pro大猜想:预计秋季与iOS 9同步亮相
  4. 汉字区位码、机内码学习笔记
  5. Android Studio导入项目提示“Unrecognized Android Studio”
  6. EAUML日拱一卒-活动图::OMG UML2.5中文译文 16.12 Expansion Regisons
  7. windows 2008/2012(64位) IIS配置asp程序 500 - 内部服务器错误。您查找的资源存在问题,因而无法显示。
  8. 杨毅:不够优秀就不要腆着脸继续占便宜
  9. 什么是云HIS?为什么HIS系统要上云?云HIS系统有哪些特点?
  10. incaseformat蠕虫病毒的预防措施及应对措施