android ------ 高版本的 Tablayout 下划线宽度
2024-09-03 15:20:42
前面呢,有写过TabLayout的博客,最近开发用到了高本版遇到一些问题,来总结一下
Android--------TabLayout实现新闻客户端顶部导航栏
Android中Tablayout设置下划线宽度 和 dp和px之间进行相互转换
上面是Api28版本之前是没问题的 api28之后呢,有些地方就有所改变了
public static void reflex(final TabLayout tabLayout){
tabLayout.post(() -> {
try {
//拿到tabLayout的slidingTabIndicator属性
Field tabIndicator = tabLayout.getClass().getDeclaredField("slidingTabIndicator");
//API28以下为mTabStrip
// Field tabIndicator = tabLayout.getClass().getDeclaredField("mTabStrip");
tabIndicator.setAccessible(true);
LinearLayout mTabStrip = (LinearLayout) tabIndicator.get(tabLayout);
int dp10 = dip2px(tabLayout.getContext(), 10); for (int i = 0; i < mTabStrip.getChildCount(); i++) {
View tabView = mTabStrip.getChildAt(i); //拿到tabView的mTextView属性 tab的字数不固定一定用反射取mTextView
Field mTextViewField = tabView.getClass().getDeclaredField("textView");
//API28以下为mTextView
// Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");
mTextViewField.setAccessible(true);
TextView mTextView = (TextView) mTextViewField.get(tabView);
tabView.setPadding(0, 0, 0, 0); //字多宽线就多宽,需要测量mTextView的宽度
int width = 0;
width = mTextView.getWidth();
if (width == 0) {
mTextView.measure(0, 0);
width = mTextView.getMeasuredWidth();
} //设置tab左右间距为10dp 这个间距可根据自己需求更改
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();
params.width = width ;
params.leftMargin = dp10;
params.rightMargin = dp10;
tabView.setLayoutParams(params);
tabView.invalidate();
} } catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}); }
当然这种方式啊我其实不是很推荐,我在网上也看到一些网友说设置了没效果
所以我用了AndroidX 之后发现了他里面的Tablayout 和之前有点的不太一样了,而且也能实现了下划线问题
请看博客
最新文章
- 海康网络摄像机YV12转换为BGR,由opencv Mat显示 (转)
- 使用BitArray判断素数
- 使用Fragment创建灵活的用户界面
- 没听说过这些,就不要说你懂并发了,three。
- php编译内容
- 通过HttpWebRequest请求与HttpWebResponse响应方式发布接口与访问接口
- Material Design练习
- NSTimer scheduledTimerWithTimeInterval与timerWithTimeInterval、initWithFireDate的区别
- HttpResponse的Close和End 区别
- SQLite函数详解之二
- NFC(4)响应NFC设备时启动activity的四重过滤机制
- MailOtto 实现完美预加载以及源码解读
- 关于android:configChanges的属性
- UniqueID和ClientID的来源
- Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
- js Array 学习
- HDU1848-Fibonacci again and again
- Rigidbody(刚体) and Collider(碰撞器)
- 道路 [NOIP模拟]
- XML5个转义符:<;,>;,&;,”,&#169;;的转义字符分别如下: &;lt; &;gt;&;amp; &;quot; &;apos;
热门文章
- ZooKeeper基本介绍
- 设计模式 结构型 - 适配器模式 Adapter
- NIO与网络编程系统化学习
- Spring+SpringMVC+Hibernate 与 shiro 整合步骤
- 第十一周LINUX 学习笔记
- flask 源码浅析(flask 如何处理请求(多线程,多进程,IO多路复用))
- 图论篇2——最小生成树算法(kurskal算法&;prim算法)
- 伪分布式下Hadoop3.0打不开localhost:50070
- c#中的解析HTML组件 -- (HtmlAgilityPack,Jumony,ScrapySharp,NSoup,Fizzler)
- Intellij IDEA如何生成JavaDoc