tablayout 指示器长度

Android-两种方式自定义Tablayout指示器长度 两种方式自定义Tablayout指示器长度 立即下载
ViewPagerAdapter mAdapter = new ViewPagerAdapter(getChildFragmentManager(),
bean.getTabShareFragmentlist(), bean.getTabBeans());
mViewPager.setOffscreenPageLimit(bean.getTabShareFragmentlist()
.size());
mViewPager.setAdapter(mAdapter);


mTabLayout.setupWithViewPager(mViewPager);

reflex(mTabLayout); //这句话就是改变指示器长度的方法


public void reflex(final TabLayout tabLayout) {
    //了解源码得知 线的宽度是根据 tabView的宽度来设置的
    tabLayout.post(new Runnable() {
        @Override
        public void run() {
            try {
                //拿到tabLayout的mTabStrip属性
                LinearLayout mTabStrip = (LinearLayout) tabLayout.getChildAt(0);

                int dp10 = DensityUtil.dip2px(tabLayout.getContext(), 50
                );

                for (int i = 0; i < mTabStrip.getChildCount(); i++) {
                    View tabView = mTabStrip.getChildAt(i);

                    //拿到tabView的mTextView属性  tab的字数不固定一定用反射取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();
            }
        }
    });

}




Android Tablayout 的Indicator 长度和样式的修改 Android Tablayout 的Indicator 长度的修改(这里只适用于:1.指示器长度和文字长度相等,2.指示器长度填满整个TabItem) 立即下载

相关推荐

Android TabLayout设置指示器宽度的方法

本篇文章主要介绍了Android TabLayout设置指示器宽度的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

TabLayout如何设置指示器长度?终于有答案了

前言: TabLayout作为material design中重要一员,在项目中已经使用非常广泛,TabLayout和Viewpager的绑定,十分简单,而且TabLayout可以设置指示器颜色,高度,模式,各种参数,但是,TabLayout并没有给我们设置指示器长度的接口或者方法,遇到需要指定指示器长度的设计,令人抓狂。 例如: Paste_Image.png 方法: 尽管TabLayout

dai的博客 4930

使用扫频信号测量房间脉冲响应

脉冲响应的测量

liuderong0的博客 1765

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

目录前言TabLayout的视图结构TabLayout绘制指示器的过程1.从获取tabSelectedIndicator边界着手1.1 默认情况下的指示器宽度1.2 tabIndicatorFullWidth="false"时,指示器宽度1.3 使用反射修改TabView的宽度1.4 修改calculateTabViewContentBounds()方法2.从tabSelectedIndicato...

YX_BB的博客 3万+

003:大疆智图新手入门:从下载安装到首次建模实战

本文为大疆智图新手提供从下载安装到首次三维建模的完整实战指南。详细介绍了软件安装的硬件要求、试用许可申请流程,并指导用户如何准备航拍数据或使用开源样例进行首次建模。通过分步操作演示与核心参数设置讲解,帮助初学者快速掌握使用大疆智图进行实景三维重建的核心流程与常见问题解决方案。

t8u9v0的博客 702

MediaPipe实战:从零构建人脸关键点检测应用

本文详细介绍了如何使用Google的MediaPipe框架从零构建一个实时人脸关键点检测应用。文章深入剖析了MediaPipe的三段式检测流水线,提供了Android平台的完整实战教程,包括环境配置、模型加载、摄像头集成、关键点绘制以及性能调优指南,帮助开发者快速实现高效、跨平台的人脸AR特效与交互功能。

weixin_29100927的博客 343

TabLayout --- 修改指示器

  【记录】记录点滴 场景:修改TabLayout的指示器长度 需求:未使用自定义Tab样式的情况下,指示器长度为文字内容长度 1. 方法基本有1)反射修改,局限性较大;2)修改TabLayout文件,根据自身的需求实现指示器 2. 为了保证灵活性和较好的用户体验,修改了TabLayout文件修改指示器长度 追踪源码,知道SlidingTabStrip负责展示Tab及对应的指示器。 ...

FeiLaughing的博客 1378

new delete 详解

常规的new 和 delete 当需要内存时,可以使用new申请内存,但在用完内存时应当使用delete 去归还内存,以防止内存泄漏,具体使用方案见下面代码: int* ps = new int ; // 使用new 申明变量空间 ... ... delete ps ; '// delete 删除所申明的变量空间 上述代码将删除ps 指针指向的内存空间,但不会删除指针本身,即仍然可以使用该指针去指向其他int 类型的变量。new 和 delete 一定需要成对的使用否则极易发生内存泄漏。 注意:不

qq_42138448的博客 6938

TabLayout的指示器宽度问题

最近碰到一个需求,因为是我比较感兴趣的TabLayout的,所以记录一下吧。 产品需求:希望上部导航栏中的指示器宽度略大于文字宽度; 技术方案:TabLayout配合ViewPager; 问题分析: 原生TabLayout的指示器宽度等于每个tab的宽度,远大于 tab内文字标题的宽度。 原因分析: TabLayout(TL)继承自HorizontalScrollView,其只能添

CysionLiu的博客 8060

STM32F407ZGT6开发板跑马灯实战:从原理图到烧录全流程(附FlyMcu配置)

本文以正点原子F4探索者开发板(STM32F407ZGT6)为例,手把手指导完成跑马灯实验。内容涵盖从原理图解读、GPIO驱动逻辑分析、HAL库工程搭建,到代码编写与FlyMcu串口烧录配置的全流程,帮助嵌入式开发新手快速实现第一个LED控制程序,打通软硬件开发链路。

weixin_29183637的博客 223

摩尔线程嵌入式面试题及参考答案(2万字长文)

说一下你对 drm 框架的理解。 DRM(Direct Rendering Manager)是 Linux 系统中用于管理图形显示设备的一个重要框架。 从架构层面来讲,它处于内核空间,主要目的是为用户空间的图形应用程序提供一个统一的接口来访问图形硬件。DRM 包括内核态的驱动模块和用户态的库。内核态的驱动负责和硬件进行交互,比如对显存的管理、硬件寄存器的配置等。用户态的库则方便应用程序利用内核态提供的功能进行图形渲染等操作。 在图形显示的具体流程中,DRM 可以控制显示设备的分辨率、刷

大模型大数据攻城狮的专栏 1229

Android 开发 TabLayout 自定义指示器长度

TabLayout 自定义指示器长度

X_sunmmer的博客 974

微信小程序:errno: 600001, errMsg: “uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::E

微信小程序报错uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::ERR_CONNECTION_RESET, custum ip is invalid, didn't find user's ip,wx.uploadFile errno: 600001 errcode:-101 ?微信小程序wx.uploadFile错误,wx.uploadFile 在真机上报下面的错误,调试工具里没有问题,其它接口在真机/调试工具都正常,

✅ 精选推荐文章 4260

TabLayout设置Tab下的指示器与文字长度相同

TabLayout默认的Tab的下的指示器是充满整个Tab的: 如果想达到指示器长度和文字长度一样长的效果,使用API: mTabLayout.setTabIndicatorFullWidth(false); 或者在xml布局文件中的TabLayout标签设置: app:tabIndicatorFullWidth=“false” setTabIndicatorFullWidth默认为true 效果如图: ...

weixin_45253393的博客 2074

基于 高斯过程回归(Gaussian Process Regression, GPR) 的 时间序列区间预测 的 MATLAB 示例代码

基于 高斯过程回归(Gaussian Process Regression, GPR) 的 时间序列区间预测 的 MATLAB 示例代码

算法如诗的博客 154

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android Tablayout 指示器长度修改

其实我们大多时候是这两个需求,一个自带的属性就搞定,还有就是自定义(根据TabLayout的版本来决定写法) 1.app:tabIndicatorFullWidth="false",ture是第一个红箭头,false是第二个。 想要修改指示器的样式,直接在代码中修改: tabThree.setSelectedTabIndicator(getResources().getDrawable(R....

shenggaofei的博客 4108

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android中Tablayout的tabMode和tabGravity的使用以及自定义TabLayout指示器长度

效果图: MainActivity.java文件 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceSt...

Grantyoga 8359

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android tablayout 自定义,android TabLayout自定义指示器样式和长度,通过自定义setCustomView... - 简书...

1.描述viewpager+tabLayout+fragment非常常见,但google只给出了改变tabLayout中的tab IndicatorHeight的方法,其宽度是填充满整个tab的,且不能更改。在网上看了很多关于改变indicator的长度的方式,大多集中与反射和setCustomView()的方式,个人更倾向于后者。2.实现1.效果Screenshot_2019-07-23-13-...

weixin_30624185的博客 1327

自定义TabLayout 1.0 (仅支持快捷设置指示器长度,且为固定值)

最近项目中有一个需求,TabLayout指示器长度改成指定固定值,当然网上有什么反射加padding什么的,可是治标不治本,且Tab过渡动画也加不了,什么?你告诉我github又xxx类似控件,可是为什么我要放弃google大神的源码呢,改改就能增加新功能了呢,为了达到目的,我就开始了下面一系列骚操作 首先是效果图,原谅不是动态的,懒得整了   项目中导入官方依赖,下面所有的操作都是依赖...

WWGtest的博客 442

修改TabLayout指示器的长度

taLayout.setupWithViewPager(vpPage); //在taLayout之后设置 Class<?> tablayout = taLayout.getClass(); File mTabStrip =null; try { mTabStrip = tablayout.getDeclaredField("mTabStrip"

fxFuxiang的博客 4296

TabLayout的指示器长度 的问题

刚开始效果图 修改后的效果图 这个效果实现 就是在 tablayout 的xml 里面添加 app:tabIndicatorFullWidth="false"

小牧在一直在学习,在前进的道路上大家一起学习,进步。 584

安卓Tablayout自定义文字、指示器长度和颜色

安卓Tablayout自定义文字、指示器长度和颜色废话不多说,先上效果图。没有效果图的文章都是扯淡:安卓Tablayout自定义文字、指示器长度和颜色新的改变以上就是所有的代码附上demo源码。**如果有什么问题,欢迎大家指导。并相互联系,希望能够通过文章互相学习。** 废话不多说,先上效果图。没有效果图的文章都是扯淡: 安卓Tablayout自定义文字、指示器长度和颜色 之前写过一篇博客是tablayout+viewpager的基本实现,类似今日头条的界面。随着需求和UI的不断提升,Android端需要

小口口的博客 2623

design28包下修改TabLayout的指示器长度

TabLayout在Android开发中是我们常用的一种布局,虽然经常使用,但是却并没有对其进行太深的研究。最近有一个问题困扰了我很长时间,就是让TabLayout的指示器与上面的文字一样宽。本以为是一个简单的问题,但Android并没有提供这样的属性,在网上也找了很多方法,大部分都是应用反射来实现,但试了都不起作用,最后通过查看源码解决了这个问题.。   网上大部分方法是通过反射来找这样一个...

Do_the_best_的博客 906

反射修改TabLayout指示器长度

在网上找了很多资料 使用反射修改指示器长度,经测试都无效,百思不得其解 public static void setTabWidth(final TabLayout tabLayout, final int padding){ tabLayout.post(new Runnable() { @Override public void run() { try { //拿到

光年的博客 278

TabLayout指示器的长短反射修改

取出所有tab其中最长的文本设置指示器宽度 /** 设置tablayout指示器宽度 * * @param tab */ public static void showTabTextAdapteIndicator(final TabLayout tab) { tab.getViewTreeObserver().ad

wangdaqi77的博客 2273
上一篇: AndroidStudio中如何运行Java程序?
下一篇: slidemenu使用使用遇见的坑
Andybfw
博客等级 码龄10年 4粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值