当前位置: 首页 > news >正文

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 云平台&#xff0c;并通过 MQTT 协议上传 DHT11 获取的温湿度值。 二、项目框图 三、DHT11工作原理 参考于良许嵌入式手把手教你玩转DHT11&#xff08;原理驱动&#xff09; | 良许嵌入式 3.1 正常工作验证 #​ 上电后&#xff…...

前端面试-JavaScript 数据类型详解

目录 一、数据类型分类 二、核心区别对比 1. 存储方式 2. 比较方式 3. 类型检测方法 三、特殊类型详解 1. Symbol 2. BigInt 3. null vs undefined 四、常见面试扩展问题 五、总结 一、数据类型分类 JavaScript 数据类型分为 基本数据类型&#xff08;原始类型&…...

【进程 】

【进程】 目录1. ELF格式程序与进程2. 进程的组织方式3. 进程的复刻&#xff08;fork&#xff09;4. 进程的状态 目录 1. ELF格式程序与进程 在Linux系统里&#xff0c;程序文件普遍采用ELF&#xff08;Executable and Linkable Format&#xff09;格式。这种格式的程序文件存…...

深入HBase——数据结构与算法

引入 通过前面的文章&#xff0c;我们对HBase已经有了基本认识&#xff0c;下面我们从HBase最核心的算法和数据结构进一步深入HBase。 HBase的一个列簇&#xff08;Column Family&#xff09;本质上就是一棵LSM树&#xff08;Log-Structured Merge-Tree&#xff09;​。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年…...

全链路优化:如何让单点登录认证接口并发性能翻倍?

背景 最近针对一个单点登录认证项目进行性能优化&#xff0c;在 8核 16G 环境下的认证并发能力从每秒800次提升至每秒1600次&#xff0c;性能提升一倍&#xff0c;整理此次优化过程中的相关性能优化操作总结和大家分享一下。 Nginx配置优化 在并发认证场景下&#xff0c;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证书密码&#xff0c;如果需要设置密码&#xff0c;需要再配置给elasticsearch 在之前的步骤中&#xff0c;如果我们对elastic-certificates.p12 文件配置了密码…...

个人简历html网页模板,科技感炫酷html简历模板

炫酷动效登录页 引言 在网页设计中,按钮是用户交互的重要元素之一。这样一款黑色个人简历html网页模板,科技感炫酷html简历模板,设计效果类似科技看板图,可帮您展示技能、任职经历、作品等,喜欢这种风格的小伙伴不要犹豫哦。该素材呈现了数据符号排版显示出人形的动画效…...

在LangFlow中集成OpenAI Compatible API类型的大语言模型

一、背景与核心价值 从Dify换到这个langflow真的时各种的不适应啊。 就比如这个OpenAI Compatible API,这不应该是基本操作嘛? 算了,服了,习惯了就好了。咱闲言少叙,正片开始: LangFlow作为LangChain的可视化开发工具,其最大优势在于无需编写代码即可构建复杂的大模型…...

Qt开发中有关内存管理方面常见的问题分析与解决方案

在Qt开发中&#xff0c;内存管理是一个既基础又关键的一部分知识。尽管Qt提供了自动化的父子对象管理机制&#xff0c;但在复杂的应用场景中&#xff08;如多线程、动态UI、异步操作等&#xff09;&#xff0c;我们在开发过程中&#xff0c;仍可能遇到内存泄漏、野指针、重复释…...

【outOfMemoryError】排查思路与解决方案

前言 不好啦❗ 天塌了❗ 系统崩了❗ 快看啊&#xff0c;程序outOfMemoryError了&#x1f648; 我的心里活动&#xff1a;“哈哈哈&#x1f600;哈哈哈&#x1f600;终于给我碰上了&#xff0c;这个问题可很少发生啊&#xff0c;又积累一个问题。虽然我昨天发了版本&#xff0…...

Python蓝桥杯刷题-小数第n位详解

题目描述 我们知道&#xff0c;整数做除法时&#xff0c;有时得到有限小数&#xff0c;有时得到无限循环小数。 如果我们把有限小数的末尾加上无限多个 0&#xff0c;它们就有了统一的形式。 本题的任务是&#xff1a;在上面的约定下&#xff0c;求整数除法小数点后的第 n 位开…...

Ubuntu服务器 /data 盘需要手动挂载的解决方案

服务器 /data 盘需要手动挂载的解决方案 如果重启服务器后&#xff0c;发现 /data 盘 没有自动挂载&#xff0c;通常是因为&#xff1a; /etc/fstab 配置文件 没有正确设置 自动挂载。该磁盘 没有被正确识别&#xff0c;需要手动挂载。文件系统错误 导致挂载失败。 下面是解…...

无法打开包括文件: “crtdbg.h”: No such file or directory

目录 无效解决措施(重装WindowsSDK) 有效解决措施 创建环境变量 添加环境变量INCLUDE 添加环境变量LIB RC无法运行 问题现象描述 复制以下文件至Error路径 无效解决措施(重装WindowsSDK) 参考文献&#xff1a;94176676/227706449-a5222d7d-d8d2-4a19-addb-8f546e69786f…...

番茄工作法html实现

对比了deepseek-r1-online和本地部署的14b的版本&#xff0c;输出的输出的html页面。 在线满血版的功能比较强大&#xff0c;可以一次完成所有要求。14b版本的功能有一些欠缺&#xff0c;但是基本功能也是写了出来了。 input write a html named Pomodoro-clock which “hel…...

多源 BFS 算法详解:从原理到实现,高效解决多源最短路问题

多源 BFS 是一种解决 边权为 1 的多源最短路问题 的高效算法。其核心思想是将所有源点视为一个“超级源点”&#xff0c;通过一次 BFS 遍历即可计算所有节点到最近源点的最短距离。以下从原理、实现和代码示例三个方面深入讲解&#xff1a; 目录 一、原理分析 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 概述…...

破局“课设感”:跨国企业视角的简历项目企业级重构指南

在全球科技圈的秋招与春招战役中&#xff0c;许多拥有扎实计算机科学&#xff08;CS&#xff09;或相关工程背景的留学生&#xff0c;常常会在简历筛选或初级技术面环节遭遇一种“降维打击”&#xff1a;自己花费数周时间精心搭建的“图书管理系统”、“电商MVP”或“社交博客”…...

仿真总是不收敛?网格/散热器/热管的“坑”,直播间当场解决!

&#x1f393;作者简介&#xff1a;科技自媒体优质创作者 &#x1f310;个人主页&#xff1a;莱歌数字-CSDN博客 211、985硕士&#xff0c;从业16年 从事结构设计、热设计、售前、产品设计、项目管理等工作&#xff0c;涉足消费电子、新能源、医疗设备、制药信息化、核工业…...

OpenVINO™ AI音频插件架构揭秘:本地化AI音频处理的性能突破

OpenVINO™ AI音频插件架构揭秘&#xff1a;本地化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找齐所有必需元件

从零搭建流水灯&#xff1a;Proteus元件查找实战指南 第一次打开Proteus时&#xff0c;面对琳琅满目的元件库&#xff0c;很多初学者都会感到无从下手。记得我刚开始学习单片机时&#xff0c;光是找一个普通的电阻就花了半小时&#xff0c;更别提完成整个电路了。本文将带你用项…...

FRP进阶配置实战:用Web仪表盘、TLS加密和带宽限制,打造更安全高效的内网穿透服务

FRP进阶配置实战&#xff1a;用Web仪表盘、TLS加密和带宽限制&#xff0c;打造更安全高效的内网穿透服务 当你的FRP内网穿透服务从测试环境走向生产环境时&#xff0c;基础配置已经不能满足需求。本文将带你深入FRP的高级功能&#xff0c;通过四个关键维度提升服务的可靠性、安…...

别再瞎调了!Fluent瞬态计算时间步长设置保姆级指南(附自适应步长技巧)

Fluent瞬态计算时间步长设置&#xff1a;从理论到实战的完整避坑手册 刚接触CFD瞬态模拟时&#xff0c;最令人头疼的莫过于时间步长的设置——太小了计算效率低下&#xff0c;太大了结果失真。我曾见过一位工程师为了模拟10秒的流动现象&#xff0c;设置了0.001秒的时间步长&am…...

别再当黑匣子用户了!手把手教你为MoveIt!配置和切换OMPL规划器(从RRT到PRM*)

从黑匣子到精准调优&#xff1a;MoveIt!与OMPL规划器实战指南 当你第一次在ROS中启动MoveIt!&#xff0c;看着机械臂流畅地避开障碍物完成抓取任务时&#xff0c;那种成就感令人难忘。但当你开始面对更复杂的场景——狭窄通道中的精密装配、动态环境下的快速响应&#xff0c;或…...

Windows PDF处理终极指南:Poppler零依赖工具包完全解析

Windows PDF处理终极指南&#xff1a;Poppler零依赖工具包完全解析 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为Windows系统上复杂的PDF处…...

PUBG压枪难?罗技鼠标宏5步帮你成为射击高手

PUBG压枪难&#xff1f;罗技鼠标宏5步帮你成为射击高手 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的后坐力控制而烦恼…...