通过修改指示器的间距来改变TabLayout指示器的宽度
来源:互联网 发布:skype6.6mac官方下载 编辑:程序博客网 时间:2024/05/22 17:00
1.写个工具类 封装:
import android.content.res.Resources;import android.support.design.widget.TabLayout;import android.util.TypedValue;import android.view.View;import android.widget.LinearLayout;import java.lang.reflect.Field;/** * Created by Sy on 2017/05/08. * */public class TabUtils { /** * @param tabs TabLayout * @param leftDip marginLeft * @param rightDip marginRight */ public static void setIndicator (TabLayout tabs, int leftDip, int rightDip){ Class<?> tabLayout = tabs.getClass(); Field tabStrip = null; try { tabStrip = tabLayout.getDeclaredField("mTabStrip"); } catch (NoSuchFieldException e) { e.printStackTrace(); return; } tabStrip.setAccessible(true); LinearLayout llTab = null; try { llTab = (LinearLayout) tabStrip.get(tabs); } catch (IllegalAccessException e) { e.printStackTrace();
return; } int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, leftDip, Resources.getSystem().getDisplayMetrics()); int right = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, rightDip, Resources.getSystem().getDisplayMetrics()); for (int i = 0; i < llTab.getChildCount(); i++) { View child = llTab.getChildAt(i); child.setPadding(0, 0, 0, 0); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1); params.leftMargin = left; params.rightMargin = right; child.setLayoutParams(params); child.invalidate(); } }}
2.在Activity调用
tab_view.post(new Runnable() { @Override public void run() { TabUtils.setIndicator(tab_view,10,10); }});3,此方法是通过反射获取tablayout私有属性进修改属性值,如果app启动混淆 会报NoSuchFieldException;
解决方案:在proguard-rules.pro混淆文件中添加-keep class android.support.design.widget.TabLayout{*;}
阅读全文
0 0
- 通过修改指示器的间距来改变TabLayout指示器的宽度
- TabLayout的指示器宽度问题
- TabLayout设置指示器的宽度
- 修改TabLayout指示器的长度
- TabLayout指示器的长短反射修改
- android.support.design.widget.TabLayout设置指示器的宽度
- 可自定义图片指示器并支持自定义Tab宽度的TabLayout
- 可自定义图片指示器并支持自定义Tab宽度的TabLayout
- 设置ViewPagerIndicator框架中IconPageIndicator的图片指示器间距
- 实现一个简单的类似 TabLayout 的顶部指示器
- TabLayout的学习以及BUG,Viewpager的指示器
- tabLayout改变下划线的宽度
- TabLayout实现ViewPager指示器
- Android TabLayout && 个性指示器
- TabLayout设置指示器长度
- 索引指示器的应用
- 索引指示器的应用
- 带有指示器的progressbar
- iOS 开发+(void)load与+(void)initialize区别
- 利用Jetty部署Java web项目
- contenteditable
- synchronized 对象锁和 ReentrantLock非公平锁tryLock() 的比较
- [Havok学习笔记(7)] 样例US_Soldier_Project.hkp学习
- 通过修改指示器的间距来改变TabLayout指示器的宽度
- C#学习笔记1
- 走向云计算之Hadoop实际应用网站日志分析
- 银联双向认证原理
- Java报错之Connection is read-only.
- 微信二维码支付接口
- spring+quartz实现定时任务遇到问题总结(bean无法注入)
- s 点击a标签 获取a的自定义属性方法_javascript技巧
- 项目部署到阿里云以及域名解析遇到的坑