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

ops/2025/2/22 9:59:49/

效果

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

实现方式

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/ops/160482.html

相关文章

STM32的HAL库开发---单通道ADC采集(DMA读取)实验

一、实验简介 正常单通道ADC采集顺序是先开启ADC采集&#xff0c;然后等待ADC转换完成&#xff0c;也就是判断EOC位置1&#xff0c;然后再读取数据寄存器的值。 如果配置了DMA功能&#xff0c;在EOC位被硬件置1后&#xff0c;自动产生DMA请求&#xff0c;然后DMA进行数据搬运…

【c语言初阶】函数_递归和迭代

前言&#xff1a; 内容&#xff1a; n的阶乘的公式&#xff0c;什么情况&#xff0c;怎么没有听懂 我咋知道n的阶乘公式啊 就是这个&#xff0c;老师说知道n的阶乘公式就容易写递归函数了&#xff0c;算了没阿关系 n!(fac(n)) 1 ,n<1 n*fac(n-1) 计算n的阶乘 &#x…

【愚公系列】《Python网络爬虫从入门到精通》025-进程间通信

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

本地部署DeepSeek R1大模型

一、安装软件 1.1 安装Ollama 你可以访问Ollama的官方网站https://ollama.com/download&#xff0c;选择适合你操作系统的安装包进行下载。老周这里是Mac系统&#xff0c;所以选择下载macOS系统。 1.2 安装cherry studio 前往官网https://cherry-ai.com/download下载对应操…

【Gin-Web】Bluebell社区项目梳理3:社区相关接口开发

本文目录 一、接口详情1. 获取分类社区列表接口2. 根据id查询社区 二、值类型与引用类型 一、接口详情 跟社区有关的接口详情如下。 1. 获取分类社区列表接口 首先是Controller层&#xff0c;然后跳转到Logic层业务逻辑的开发。 这是Logic层&#xff0c;再做一次跳转&#…

支持向量机 (Support Vector Machine, SVM)

支持向量机 (Support Vector Machine, SVM) 支持向量机&#xff08;SVM&#xff09;是一种广泛应用于分类、回归分析以及异常检测的监督学习算法。它基于结构风险最小化&#xff08;Structural Risk Minimization&#xff0c;SRM&#xff09;原则&#xff0c;通过寻找一个最优…

tp6上传文件大小超过了最大值+验证文件上传大小和格式函数

问题&#xff1a; 最近用tp6的文件上传方法上传文件时报文件过大错误。如下所示&#xff1a; $file $this->request->file(file);{"code": 1,"msg": "上传文件大小超过了最大值&#xff01;","data": {"code": 1,&q…

TSMaster【第三篇:神兵认主——TSMaster开发环境开锋 】

&#xff08;软件安装如铸剑九步&#xff0c;硬件通道映射暗藏乾坤大挪移心法&#xff09; 【武侠场景导入】光明顶密道寻宝 昔年明教光明顶密道中&#xff0c;张无忌偶得《乾坤大挪移》心法&#xff0c;须打通全身经脉方能施展。今我辈工程师欲驾驭TSMaster这把"倚天剑&…