Android TabLayout 实现随意控制item之间的间距
效果
红色标注是不同的间距。

实现方式
1、xml中定义
<com.google.android.material.tabs.TabLayoutandroid:id="@+id/tab_layout"android:layout_width="wrap_content"app:tabIndicatorColor="@color/color_FF00B2E3"app:tabBackground="@android:color/transparent"app:tabRippleColor="@android:color/transparent"android:layout_height="wrap_content"app:tabIndicatorHeight="5dp"android:background="@android:color/transparent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"></com.google.android.material.tabs.TabLayout>
2、代码动态添加自定义tab
for (int i = 0; i < mTabsStrId.length; i++) {View tabview = LayoutInflater.from(getContext()).inflate(R.layout.tab_item, null);TextView tvTab = tabview.findViewById(R.id.tv_tab);tvTab.setText(mTabsStrId[i]);TabLayout.Tab tab = binding.tabLayout.newTab();tab.setCustomView(tabview);binding.tabLayout.addTab(tab, i == 0);}
tab的xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/tv_tab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:includeFontPadding="false"android:textFontWeight="500"android:text="@string/xxx"android:textColor="@color/selector_xxx"android:textSize="28sp" />
</LinearLayout>
3、去除tablayout原有padding,并设置两个tab之间的间距
for (int i = 0; i < binding.tabLayout.getTabCount(); i++) {View tab = ((ViewGroup) binding.tabLayout.getChildAt(0)).getChildAt(i);ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) tab.getLayoutParams();tab.setPadding(0, 0, 0, 0);if (i > 0) {params.setMargins(DisplayUtils.dp2px(86), 0, 0, 0); // 设置左右间距} else {params.setMargins(DisplayUtils.dp2px(22), 0, 0, 0); // 设置左右间距}}binding.tabLayout.invalidate();
相关文章:
Android TabLayout 实现随意控制item之间的间距
效果 红色标注是不同的间距。 实现方式 1、xml中定义 <com.google.android.material.tabs.TabLayoutandroid:id"id/tab_layout"android:layout_width"wrap_content"app:tabIndicatorColor"color/color_FF00B2E3"app:tabBackground"a…...
STM32的“Unique device ID“能否修改?
STM32F1系列的"Unique device ID"寄存器的地址为0x1FFFF7E8。 这个寄存器是只读的。 "Unique device ID"寄存器位于“System memory”中。“System memory”地址范围为“0x1FFF F000- 0x1FFF F7FF”。 所有STM32 MCU上都存在系统引导加载程序。顾名思义&a…...
STM32-温湿度上传OneNET项目
一、项目需求 使用 ESP8266 连接 OneNET 云平台,并通过 MQTT 协议上传 DHT11 获取的温湿度值。 二、项目框图 三、DHT11工作原理 参考于良许嵌入式手把手教你玩转DHT11(原理驱动) | 良许嵌入式 3.1 正常工作验证 # 上电后ÿ…...
前端面试-JavaScript 数据类型详解
目录 一、数据类型分类 二、核心区别对比 1. 存储方式 2. 比较方式 3. 类型检测方法 三、特殊类型详解 1. Symbol 2. BigInt 3. null vs undefined 四、常见面试扩展问题 五、总结 一、数据类型分类 JavaScript 数据类型分为 基本数据类型(原始类型&…...
【进程 】
【进程】 目录1. ELF格式程序与进程2. 进程的组织方式3. 进程的复刻(fork)4. 进程的状态 目录 1. ELF格式程序与进程 在Linux系统里,程序文件普遍采用ELF(Executable and Linkable Format)格式。这种格式的程序文件存…...
深入HBase——数据结构与算法
引入 通过前面的文章,我们对HBase已经有了基本认识,下面我们从HBase最核心的算法和数据结构进一步深入HBase。 HBase的一个列簇(Column Family)本质上就是一棵LSM树(Log-Structured Merge-Tree)。LSM树…...
Python爬虫实战:获取六图网漫画图
注意:以下内容仅供技术研究,请遵守目标网站的robots.txt规定,控制请求频率避免对目标服务器造成过大压力! 一、引言 Python 作为一种广泛应用于数据处理和网络爬虫领域的编程语言,拥有丰富的库和框架。其中,Scrapy 框架以其高效、灵活、可扩展等特点,成为构建爬虫程序的…...
HAProxy介绍与编译安装
目录 1、HAProxy介绍 2、HAProxy编译安装 Centos 基础环境 Ubuntu 基础环境 编译安装HAProxy 验证HAProxy版本 HAProxy启动脚本 配置文件 启动haproxy 验证haproxy状态 查看haproxy的状态页面 1、HAProxy介绍 HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年…...
全链路优化:如何让单点登录认证接口并发性能翻倍?
背景 最近针对一个单点登录认证项目进行性能优化,在 8核 16G 环境下的认证并发能力从每秒800次提升至每秒1600次,性能提升一倍,整理此次优化过程中的相关性能优化操作总结和大家分享一下。 Nginx配置优化 在并发认证场景下,Ngi…...
在Spring Boot中如何使用Freemaker模板引擎
在 Spring Boot 中使用 FreeMarker 模板引擎可以帮助你创建动态的 Web 页面。以下是详细的步骤和示例代码,介绍如何在 Spring Boot 项目里集成和使用 FreeMarker。 1. 添加依赖 如果你使用的是 Maven 项目,需要在 pom.xml 文件中添加 FreeMarker 相关依赖。Spring Boot 提供…...
Elasticsearch7.1.1 配置密码和SSL证书
生成SSL证书 ./elasticsearch-certutil ca -out config/certs/elastic-certificates.p12 -pass 我这里没有设置ssl证书密码,如果需要设置密码,需要再配置给elasticsearch 在之前的步骤中,如果我们对elastic-certificates.p12 文件配置了密码…...
个人简历html网页模板,科技感炫酷html简历模板
炫酷动效登录页 引言 在网页设计中,按钮是用户交互的重要元素之一。这样一款黑色个人简历html网页模板,科技感炫酷html简历模板,设计效果类似科技看板图,可帮您展示技能、任职经历、作品等,喜欢这种风格的小伙伴不要犹豫哦。该素材呈现了数据符号排版显示出人形的动画效…...
在LangFlow中集成OpenAI Compatible API类型的大语言模型
一、背景与核心价值 从Dify换到这个langflow真的时各种的不适应啊。 就比如这个OpenAI Compatible API,这不应该是基本操作嘛? 算了,服了,习惯了就好了。咱闲言少叙,正片开始: LangFlow作为LangChain的可视化开发工具,其最大优势在于无需编写代码即可构建复杂的大模型…...
Qt开发中有关内存管理方面常见的问题分析与解决方案
在Qt开发中,内存管理是一个既基础又关键的一部分知识。尽管Qt提供了自动化的父子对象管理机制,但在复杂的应用场景中(如多线程、动态UI、异步操作等),我们在开发过程中,仍可能遇到内存泄漏、野指针、重复释…...
【outOfMemoryError】排查思路与解决方案
前言 不好啦❗ 天塌了❗ 系统崩了❗ 快看啊,程序outOfMemoryError了🙈 我的心里活动:“哈哈哈😀哈哈哈😀终于给我碰上了,这个问题可很少发生啊,又积累一个问题。虽然我昨天发了版本࿰…...
Python蓝桥杯刷题-小数第n位详解
题目描述 我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。 如果我们把有限小数的末尾加上无限多个 0,它们就有了统一的形式。 本题的任务是:在上面的约定下,求整数除法小数点后的第 n 位开…...
Ubuntu服务器 /data 盘需要手动挂载的解决方案
服务器 /data 盘需要手动挂载的解决方案 如果重启服务器后,发现 /data 盘 没有自动挂载,通常是因为: /etc/fstab 配置文件 没有正确设置 自动挂载。该磁盘 没有被正确识别,需要手动挂载。文件系统错误 导致挂载失败。 下面是解…...
无法打开包括文件: “crtdbg.h”: No such file or directory
目录 无效解决措施(重装WindowsSDK) 有效解决措施 创建环境变量 添加环境变量INCLUDE 添加环境变量LIB RC无法运行 问题现象描述 复制以下文件至Error路径 无效解决措施(重装WindowsSDK) 参考文献:94176676/227706449-a5222d7d-d8d2-4a19-addb-8f546e69786f…...
番茄工作法html实现
对比了deepseek-r1-online和本地部署的14b的版本,输出的输出的html页面。 在线满血版的功能比较强大,可以一次完成所有要求。14b版本的功能有一些欠缺,但是基本功能也是写了出来了。 input write a html named Pomodoro-clock which “hel…...
多源 BFS 算法详解:从原理到实现,高效解决多源最短路问题
多源 BFS 是一种解决 边权为 1 的多源最短路问题 的高效算法。其核心思想是将所有源点视为一个“超级源点”,通过一次 BFS 遍历即可计算所有节点到最近源点的最短距离。以下从原理、实现和代码示例三个方面深入讲解: 目录 一、原理分析 1. 单源 BFS vs…...
Linux内核开发工具之Sparse
https://notes.z-dd.online/2026/01/22/Linux%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%E4%B9%8BSparse/https://notes.z-dd.online/2026/01/22/Linux%E5%86%85%E6%A0%B8%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%E4%B9%8BSparse/ Linux内核开发工具之Sparse 概述…...
破局“课设感”:跨国企业视角的简历项目企业级重构指南
在全球科技圈的秋招与春招战役中,许多拥有扎实计算机科学(CS)或相关工程背景的留学生,常常会在简历筛选或初级技术面环节遭遇一种“降维打击”:自己花费数周时间精心搭建的“图书管理系统”、“电商MVP”或“社交博客”…...
仿真总是不收敛?网格/散热器/热管的“坑”,直播间当场解决!
🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 211、985硕士,从业16年 从事结构设计、热设计、售前、产品设计、项目管理等工作,涉足消费电子、新能源、医疗设备、制药信息化、核工业…...
OpenVINO™ AI音频插件架构揭秘:本地化AI音频处理的性能突破
OpenVINO™ AI音频插件架构揭秘:本地化AI音频处理的性能突破 【免费下载链接】openvino-plugins-ai-audacity A set of AI-enabled effects, generators, and analyzers for Audacity. 项目地址: https://gitcode.com/gh_mirrors/op/openvino-plugins-ai-audacity…...
从零搭建一个流水灯:手把手教你用Proteus找齐所有必需元件
从零搭建流水灯:Proteus元件查找实战指南 第一次打开Proteus时,面对琳琅满目的元件库,很多初学者都会感到无从下手。记得我刚开始学习单片机时,光是找一个普通的电阻就花了半小时,更别提完成整个电路了。本文将带你用项…...
FRP进阶配置实战:用Web仪表盘、TLS加密和带宽限制,打造更安全高效的内网穿透服务
FRP进阶配置实战:用Web仪表盘、TLS加密和带宽限制,打造更安全高效的内网穿透服务 当你的FRP内网穿透服务从测试环境走向生产环境时,基础配置已经不能满足需求。本文将带你深入FRP的高级功能,通过四个关键维度提升服务的可靠性、安…...
别再瞎调了!Fluent瞬态计算时间步长设置保姆级指南(附自适应步长技巧)
Fluent瞬态计算时间步长设置:从理论到实战的完整避坑手册 刚接触CFD瞬态模拟时,最令人头疼的莫过于时间步长的设置——太小了计算效率低下,太大了结果失真。我曾见过一位工程师为了模拟10秒的流动现象,设置了0.001秒的时间步长&am…...
别再当黑匣子用户了!手把手教你为MoveIt!配置和切换OMPL规划器(从RRT到PRM*)
从黑匣子到精准调优:MoveIt!与OMPL规划器实战指南 当你第一次在ROS中启动MoveIt!,看着机械臂流畅地避开障碍物完成抓取任务时,那种成就感令人难忘。但当你开始面对更复杂的场景——狭窄通道中的精密装配、动态环境下的快速响应,或…...
Windows PDF处理终极指南:Poppler零依赖工具包完全解析
Windows PDF处理终极指南:Poppler零依赖工具包完全解析 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统上复杂的PDF处…...
PUBG压枪难?罗技鼠标宏5步帮你成为射击高手
PUBG压枪难?罗技鼠标宏5步帮你成为射击高手 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的后坐力控制而烦恼…...
