Android TabLayout 实现随意控制item之间的间距

news/2025/2/22 23:31:03/

效果

红色标注是不同的间距。
在这里插入图片描述

实现方式

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();

http://www.ppmy.cn/news/1574272.html

相关文章

提升接口性能之缓存

缓存策略: 从本地到分布式, 再到 HTTP 缓存的全面解析 引言 在当今的软件开发中, 缓存技术扮演着至关重要的角色. 它能够显著提升系统性能, 降低数据库负载, 提高用户体验. 本文将详细介绍三种常见的缓存策略: 本地缓存, 分布式缓存以及 HTTP 缓存, 并探讨如何在实际应用中合…

DeepSeek 点燃关键技术突破的科技引擎,驶向未来新航道

本文将深入探讨 DeepSeek AI 大模型的技术原理、应用场景&#xff0c;并结合丰富的代码示例&#xff0c;详细阐述如何利用该模型实现关键技术的突破。 目录 一、本篇背景&#xff1a; 二、DeepSeek AI 大模型概述&#xff1a; 2.1 发展背景与意义&#xff1a; 2.2 核心技术…

最新 :服务器的cuda版本太老旧怎么办--cuda安装指南

0.写在前面 最近开学换了新的服务平台实例&#xff0c;发现里面的配置很旧&#xff0c;又发现网上没有相关最新教程。 以安装cuda12.2为例 … 本来想直接安装我驱动能够支持的最新的cuda 后来发现这样及其不方便 &#xff0c;大家还是安装经典的&#xff0c;用的多比如11.8 &a…

清华大学DeepSeek PPT第二版 Deepseek赋能职场应用

清华大学团队 再次更新《Deepseek入门到精通》2.0版本 赋能职场应用&#xff0c;教你如何轻松在多场景应用deepseek 下载地址&#xff1a;夸克网盘分享 同样还有第一版&#xff1a;夸克网盘分享 另外分享多个2025最新AI课程 下载地址 &#xff1a; 夸克网盘分享 还有其他更多…

前端PDF转图片技术调研实战指南:从踩坑到高可用方案的深度解析

本文以真实业务场景为背景&#xff0c;深入剖析前端PDF转图片的 7大核心指标 &#xff0c;通过3000字详解5种方案对比性能压测数据&#xff0c;输出可复用的技术调研方法论。 一、技术调研认知误区与破局之道 1.1 需求理解典型翻车现场 // 错误案例&#xff1a;未明确需求边界…

基于深度学习与知识图谱的设备智能维护系统KGPHMAgent

基于深度学习与知识图谱集成的设备智能维护系统KGPHMAgent融合了深度学习、知识图谱构建、自然语言处理等技术&#xff0c;以模块化的方式进行设计与实现。系统采用Python编程语言&#xff0c;支持跨平台应用&#xff0c;通过前后端集成开发&#xff0c;采用开放的、模块化、多…

设计模式教程:享元模式(Flyweight Pattern)

享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;用于减少对象的创建数量&#xff0c;避免大量相似对象的内存占用。它通过共享对象来有效支持大量的细粒度对象&#xff0c;尤其是在需要大量类似对象的情况下&#xff0c;享元模式可以显著节…

Maven导入hutool依赖报错-java: 无法访问cn.hutool.core.io.IORuntimeException 解决办法

欢迎大家来到我的博客~欢迎大家对我的博客提出指导&#xff0c;有错误的地方会改进的哦~点击这里了解更多内容 目录 一、报错二、解决办法 一、报错 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId> </de…