Android Tablayout 指示器长度修改
其实我们大多时候是这两个需求,一个自带的属性就搞定,还有就是自定义(根据TabLayout的版本来决定写法)
1.app:tabIndicatorFullWidth="false",ture是第一个红箭头,false是第二个。
想要修改指示器的样式,直接在代码中修改:
tabThree.setSelectedTabIndicator(getResources().getDrawable(R.drawable.line));
2.下面是自定义的写法的一种:
下面是activity中的写法:
public 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();}tabStrip.setAccessible(true);LinearLayout llTab = null;try {llTab = (LinearLayout) tabStrip.get(tabs);} catch (IllegalAccessException e) {e.printStackTrace();}int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip2px(leftDip), Resources.getSystem().getDisplayMetrics());int right = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip2px(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();}}/*** dp转px**/public int dip2px(int dipValue) {float reSize = getActivity().getResources().getDisplayMetrics().density;return (int) ((dipValue * reSize) + 0.5);}
调用方法:
tabLive.post(new Runnable() {@Overridepublic void run() {
// setIndicator(tabLive,5,5);
// SetIndicator.setIndicator(tabLive,5,5);}});
下面是封装的类:
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;import static com.southsummer.goddessplan.utils.AppUtils.getResources;/*** tabLayout设置指示器长度*/
public class SetIndicator {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();}tabStrip.setAccessible(true);LinearLayout llTab = null;try {llTab = (LinearLayout) tabStrip.get(tabs);} catch (IllegalAccessException e) {e.printStackTrace();}int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip2px(leftDip), Resources.getSystem().getDisplayMetrics());int right = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip2px(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();}}/*** dp转px**/public static int dip2px(int dipValue) {float reSize = getResources().getDisplayMetrics().density;return (int) ((dipValue * reSize) + 0.5);}
}
Android Tablayout 指示器长度修改相关推荐
- Android TabLayout修改指示器宽度方案汇总
目录 前言 TabLayout的视图结构 TabLayout绘制指示器的过程 1.从获取tabSelectedIndicator边界着手 1.1 默认情况下的指示器宽度 1.2 tabIndicato ...
- Android TabLayout基本使用及完美调整指示器位置的技巧
在应用中,我们经常遇到多个页签切换的需求,这个时候往往使用viewPager+TabLayout实现,但官方的TabLayout使用时往往不满足我们的需求,例如不能修改指示器长度的问题,本文利用巧妙的 ...
- 安卓Tablayout自定义文字、指示器长度和颜色
安卓Tablayout自定义文字.指示器长度和颜色 废话不多说,先上效果图.没有效果图的文章都是扯淡: 安卓Tablayout自定义文字.指示器长度和颜色 新的改变 以上就是所有的代码 附上demo源 ...
- AppBarLayout中的Android TabLayout
In this tutorial, we'll discuss and implement Android TabLayout in our android application. Also we' ...
- Android ViewPager指示器
一个values文件 attrs_universal_indicator.xml文件 <?xml version="1.0" encoding="utf-8&quo ...
- Android TabLayout和ViewPager
In this tutorial we'll be implementing a ViewPager under the TabLayout that we'd already implemented ...
- Android TabLayout总结
文章目录 Android TabLayout总结 基本使用 添加图标.隐藏下划线 自定义下划线.添加分割线 设置角标 圆角样式 自定义View+Lottile 代码下载 Android TabLayo ...
- android进度指示器_等待的痛苦—浏览进度指示器地狱的7个级别
android进度指示器 by Mike Zetlow 由Mike Zetlow 等待的痛苦-浏览进度指示器地狱的7个级别 (The Pain of Waiting - Navigating the ...
- Android TabLayout(选项卡布局)简单用法实例分析
本文实例讲述了Android TabLayout(选项卡布局)简单用法.分享给大家供大家参考,具体如下: 我们在应用viewpager的时候,经常会使用TabPageIndicator来与其配合.达到 ...
最新文章
- 【redis】redis持久化
- kafka 集群_10分钟搭建单机Kafka集群
- 工作184:自定义事件
- 修改了模板文件tpl如何立即生效_Views视图与模板
- Java中complex怎么被调用_java中存在三种调用机制
- 66Linux主机名和hosts67网络配置小结
- 上线随想之2011-03-26
- php实现无限极分类算法,php实现无限极分类
- 使用javascript实现点击复制到剪贴板
- C语言:输出100以内的素数
- RabbitMQ 快速入门指南
- Python统计学11——分位数回归
- 如何拿下最适合晚上睡不着看的网站?建议收藏!
- 虚拟汽车加油问题 (贪心算法)
- Reflector反编译.NET文件后修复
- pve安装黑群晖直通硬盘_PVE系列二:安装黑群晖DSM系统
- 知足知不足 有为有不为
- arcgis数据量大显示慢_百万量级矢量数据加载对比实验,Arcgis VS LSV专业版
- Conmi的正确答案——米家定时模块的使用以及showOnTimerType、showOffTimerType、showPeriodTimerType、identify的陷阱
- python蒙特卡洛算法模拟赌博模型
热门文章
- iOS开发之iOS10简单适配
- 【SW7203】智融新料号SW7203,支持1-4S,双向升降压,路径管理,可搭配SW2303,实现车充、移动电源100W
- KVM内核文档阅读笔记
- 量化进阶——为何需要进行量化对冲
- 70-webApp打包:将网站利用hbuilder打包为安卓app
- 服务注册与发现(下)
- linux bash环境下面给expect脚本传递参数
- 北大双杰——孔庆东和余杰
- 微型计算机 介绍 gtx980m,NVIDIA GTX 980M和GTX 1060游戏本谁更值得买?GTX 980M/1060M性能对比评测...
- ReLU函数 Vs Sigmoid 函数——XOR问题究竟用那个好