自定义Tablayout下线的宽度
来源:互联网 发布:小米抢购软件有用吗 编辑:程序博客网 时间:2024/05/02 08:48
好久没写博客了,这次写一遍关于自定义Tablayout下划线宽度的文章.对于Tablayout大家一个非常的熟悉.在使用的时候一般是与ViewPager连用.但是原生的Tablayout的下滑线的宽度是根据你的Tab的宽度来匹配的.有时就会觉得很丑,觉得下滑线的宽度太大了.主要原生的Tablayout有没有属性去设置下划线宽度的方法.所有只能去自己去手动的去设置.说了这么多,主要的代码如下:
这里我定义了一个工具类 可以直接拷贝直接用:
public class TablayoutUtils { public static void reflex(final TabLayout tabLayout){ //了解源码得知 线的宽度是根据 tabView的宽度来设置的 tabLayout.post(new Runnable() { @Override public void run() { try { //拿到tabLayout的mTabStrip属性 Field mTabStripField = tabLayout.getClass().getDeclaredField("mTabStrip"); mTabStripField.setAccessible(true); LinearLayout mTabStrip = (LinearLayout) mTabStripField.get(tabLayout); int dp10 = dip2px(tabLayout.getContext(), 10); for (int i = 0; i < mTabStrip.getChildCount(); i++) { View tabView = mTabStrip.getChildAt(i); //拿到tabView的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 注意这里不能使用Padding 因为源码中线的宽度是根据 tabView的宽度来设置的 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(); } } }); } public static int dip2px(Context context, float dipValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dipValue * scale + 0.5f); }}
使用时只要调用该方法就行,代码如下
for (int i = 0; i < mItemName.size(); i++) { mBrandActivityTab.addTab(mBrandActivityTab.newTab().setCustomView(getTabView(i))); } //注意这方法要在addTab()方法只需完成之后,调用才能起到作用 TablayoutUtils.reflex(mBrandActivityTab);
最后看看效果图如下:
看上面的图,上面是使用的是自定的宽度,下面是没有使用的效果.是不是使用之后瞬间小清新了.这样自定的Tablayout下滑先宽度就完成了.希望这边博客对你有所帮助谢谢!!!!!
阅读全文
0 0
- 自定义Tablayout下线的宽度
- TabLayout的指示器宽度问题
- 设置tablayout下划线的宽度
- 设置Tablayout的tab宽度
- TabLayout设置指示器的宽度
- tabLayout改变下划线的宽度
- 可自定义图片指示器并支持自定义Tab宽度的TabLayout
- 可自定义图片指示器并支持自定义Tab宽度的TabLayout
- TabLayout的自定义实现
- 自定义TabLayout的实现
- 自定义TabLayout的Tab
- 优雅的自定义TabLayout
- 自定义Tablayout的布局
- TabLayout的TabItem自定义
- 自定义自适应的TabLayout
- TabLayout的TabItem自定义
- 改变TabLayout的线的宽度
- TabLayout中下划线宽度的更改
- Python工具包以及资源包
- 视觉编程
- 静态代码块、非静态代码块、构造函数三者执行顺序
- springboot+thymeleaf 实现thymeleaf自定义方言系统 自定义标签, cms系统搭建(一)
- 关机程序(整人)
- 自定义Tablayout下线的宽度
- 笔记·Spring框架第三天
- Quartz(三)整合spring
- Spring事务管理,"'程序报错'但'事务不回滚'?"问题分析(SSM实例)
- mysql中Timestamp,time,datetime 区别
- 安卓JNI错误调试汇总
- 第一次看车果断出手——北京现代途胜提车记
- C 静态链表实现逻辑
- 网页性能管理详解