android原生TabLayout之自定义指示器效果
“com.google.android.material.tabs.TabLayout” 这个玩意说起来大家都不陌生。结合viewPager或者单独使用。场景非常多。当然市面上的三方也数不胜数。但是毕竟是亲儿子。用起来终归是顺手一些。下面说一下TabLayout的具体用法细节:
首先,xml布局引入(此处为举例说明,具体属性用法自行百度):
<com.google.android.material.tabs.TabLayoutandroid:id="@+id/tab_record_layout"android:layout_width="match_parent"android:layout_height="43dp"android:background="@color/transparent"#具体属性用法自行百度app:tabIndicatorColor="#0E55FD"/>
下面先说一下具体调用:
for (i in list.indices) {tab_layout.addTab(tab_layout.newTab()) //动态创建tab//亦或tab_layout.newTab().setText(data.type_name).setTag(data.type_id) }
然后就是动态添加TabLayout的样式,如果是属性可以满足就不需要,如果自带属性不能满足效果,则自定义样式,如下:
for (i in 0 until tab_layout.tabCount) {val tab = tab_layout.getTabAt(i)tab?.customView = layoutInflater.inflate(R.layout.custom_tab, null)if (tab != null && tab.customView != null) {val abIcon = tab.customView!!.findViewById<ImageView>(R.id.iv_tab_item)val tabTitle = tab.customView!!.findViewById<TextView>(R.id.tv_tab_item)tabTitle.text = tab.text//把第一个设为默认选中if (i == 0) {tabTitle.setTextColor(Color.parseColor("#0E55FD"))tabTitle?.typeface = Typeface.defaultFromStyle(Typeface.BOLD)abIcon.isInvisible = false}}}
最后就是添加监听:
tab_layout.addOnTabSelectedListener(onTabSelectedListener)
//...
val onTabSelectedListener: TabLayout.OnTabSelectedListener =object : TabLayout.OnTabSelectedListener {//选中监听override fun onTabSelected(tab: TabLayout.Tab) {if (tab.customView != null) {//获取自定义tab布局中的viewval tabIcon = tab.customView!!.findViewById<ImageView>(R.id.iv_tab_item)val tabTitle = tab.customView!!.findViewById<TextView>(R.id.tv_tab_item)tabTitle.text = tab.texttabTitle.setTextColor(Color.parseColor("#0E55FD"))tabTitle?.typeface = Typeface.defaultFromStyle(Typeface.BOLD)tabIcon.isInvisible = false}type_id = mViewModel.typeList.get(tab.position).type_idmViewModel.getList(type_id)}// 未选中监听override fun onTabUnselected(tab: TabLayout.Tab) {if (tab.customView != null) {val tabIcon = tab.customView!!.findViewById<ImageView>(R.id.iv_tab_item)val tabTitle = tab.customView!!.findViewById<TextView>(R.id.tv_tab_item)tabTitle.text = tab.texttabTitle.setTextColor(Color.parseColor("#333333"))tabTitle.typeface = Typeface.defaultFromStyle(Typeface.NORMAL);tabIcon.isInvisible = true}}override fun onTabReselected(tab: TabLayout.Tab) {}}
最后,如果是ViewPager + TabLayout需要联动的话,则添加联动代码:
//使用.attach()将TabLayout和ViewPager2进行绑定,如果没有这步操作将不会联动TabLayoutMediator(tab_layout, viewPager) { tab, position ->//根据position修改tab的样式和文字等tab.text = tabTitles[position]}.attach()
具体需结合场景,灵活使用。
END
相关文章:
android原生TabLayout之自定义指示器效果
“com.google.android.material.tabs.TabLayout” 这个玩意说起来大家都不陌生。结合viewPager或者单独使用。场景非常多。当然市面上的三方也数不胜数。但是毕竟是亲儿子。用起来终归是顺手一些。下面说一下TabLayout的具体用法细节: 首先,xml布局引入…...
最新 HUAWEI DevEco Studio 使用技巧
最新 HUAWEI DevEco Studio 使用技巧 HUAWEI DevEco Studio 作为我们 harmonyos 应用的开发工具,有必要好好打磨一下。 Chinese(Simplified) 中文汉化插件 GitToolBox 编辑器中显示git历史 保存时自动格式化 写了一堆代码,当保存时,自动帮…...
开源大模型与闭源大模型浅析
引言 技术发展背景 早期语言模型 预训练与微调的范式 开源与闭源模型的兴起 当前的技术前沿 未来发展趋势 开源大模型的特点与优势 技术共享与创新加速 成本效益 社区驱动的发展 透明度和可审计性 促进教育与人才培养 灵活性和自定义 闭源大模型的特点与优势 商…...
docker 命令 ps,inspect,top,logs详解
docker常用命令教程-4 docker ps docker ps 命令用于列出当前正在运行的容器。默认情况下,它只显示正在运行的容器,但你可以使用 -a 或 --all 选项来显示所有容器(包括已停止的容器)。 常用的选项和示例: -a 或 --…...
Windows 找不到文件‘shell:sendto‘。请确定文件名是否正确后,再试一次
执行“shell:sendto”命令的时候,报错:Windows 找不到文件’shell:sendto’。请确定文件名是否正确后,再试一次 解决办法: 在桌面新建一个记事本文件命名为fix.reg,注意后缀是reg,文件中填写以下内容&…...
【算法】模拟算法——外观数组(medium)
题解:模拟算法——外观数组(medium) 目录 1.题目2.题解3.参考代码4.总结 1.题目 题目链接:LINK 2.题解 首先应该理解题意: 就是开始给你一个字符串,然后你对其进行描述。 描述规则是:连续的数字为一组,…...
2024年会计、金融与工商管理国际会议(ICAFBA 2024)
2024年会计、金融与工商管理国际会议 2024 International Conference on Accounting, Finance, and Business Administration 【1】会议简介 2024年会计、金融与工商管理国际会议是一场集合了全球会计、金融与工商管理领域专家学者的学术盛会。此次会议旨在深入探讨会计、金融与…...
关于 spring boot 的 目录详解 和 配置文件 以及 日志
目录 配置文件 spring boot 的配置文件有两种格式,分别是 properties 和 yml(yaml)。这两种格式的配置文件是可以同时存在的,此时会以 properties 的文件为主,但一般都是使用同一种格式的。 格式 properties 语法格…...
如何删除电脑端口映射?
在使用电脑进行网络连接时,有时需要进行端口映射以实现不同设备之间的信息远程通信。当这些端口映射不再需要时,我们需要及时删除它们以确保网络的安全和稳定。本文将介绍如何删除电脑端口映射的方法。 操作系统自带的工具 大多数操作系统都提供了自带…...
xiaolingcoding 图解网络笔记——基础篇
文章目录 参考一、网络模型有哪几层DMANAPI 机制二、键入网址到网页显示,期间发生了什么?1. HTTP2. DNS3. 协议栈4. TCP5. IP6. MAC7. 网卡8. 交换机9. 路由器10. 服务器 与 客户端的互相扒皮(添加、删除头部信息)参考图HTTP 请求…...
Docker 容器 mysql 配置主从
1、前提条件 集群的条件下 服务器 172.16.11.195 13316:3306 服务器 172.16.11.196 13317:3306 配置好主数据库和从数据 2、配置主从数据库 2.1使用portainer 来管理容器 建立数据库密码 新增配置文件 # mysql-master.cnf [mysqld] server_id110 log-binmysql-binrela…...
64. UE5 RPG 创建新的双手攻击怪物
在上一篇文章中,我们实现了新的功能,现在可以创建多个普通攻击动画,并且可以根据你所使用的普通攻击动画,设置不同的攻击位置。比如,你使用武器,那么攻击位置需要从武器上获取,如果你没有持有武…...
(求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数的各位数字相加。例如:整数是 932,各位数字之和为14。
(求一个整数各位数的和)编写程序,读取一个在0和1000之间的整数,并将该整数 的各位数字相加。例如:整数是 932,各位数字之和为14。 提示:利用操作符%分解数字,然后使用操作符/去掉分解出来的数字。例如: 932%10-2 932/10-93。下面是一个运行示…...
大模型参加高考,同写2024年高考作文,及格分(通义千问、Kimi、智谱清言、Gemini Advanced、Claude-3-Sonnet、GPT-4o)
大家好,我是章北海 今天高考,上午的语文结束,市面上又要来一场大模型参考的文章了。 我也凑凑热闹,让通义千问、Kimi、智谱清言一起来写一下高考作文。 公平起见,不加任何其他prompt,直接把题目甩过去。…...
【因果推断python】24_倾向得分2
目录 倾向加权 倾向得分估计 倾向加权 好的,我们得到了倾向得分。怎么办?就像我说过的,我们需要做的就是以此为条件。例如,我们可以运行一个线性回归,它仅以倾向得分为条件,而不是所有的 X。现在ÿ…...
部件库(Widget Factory)
部件库(Widget Factory) 部件库,也被称为Widget Factory,是一个强大的工具,用于创建、存储和管理可重用的软件组件。在本文中,我们将深入探讨部件库的概念、重要性、以及如何在现代软件开发中使用它。 什么是部件库? 部件库是一个集合,其中包含了各种预先构建的软件…...
tomcat启动闪退解决办法
检查端口冲突: Tomcat默认使用8080端口,如果该端口已被其他应用占用,Tomcat将无法启动。解决办法:更改Tomcat使用的端口号或关闭占用该端口的其他应用。 更改Tomcat端口号:打开Tomcat安装目录下的conf文件夹࿰…...
OpenStack云平台管理
OpenStack云平台管理 文章目录 OpenStack云平台管理资源列表基础环境一、部署Openstack二、创建网络和路由2.1、删除默认的网络2.2、创建网络和路由2.2.1、创建外部网络2.2.2、创建内部网络 2.3、创建路由 三、创建实例3.1、配置实例3.2、配置NAT转换 四、绑定浮动IP地址五、添…...
内部类(超详细)
内部类 一:初始内部类 (1)什么是内部类? 类的五大成员:属性、方法、构造方法、代码块、内部类 举例:在A类的内部定义B类,B类就被称为内部类 public class Outer {// 外部类public class Inter {// 内部类} } public class Test {// 外部其他类public static void m…...
Android的SELinux详解
标签: Android的SELinux详解; SELinux;Enforcing; Android的SELinux详解 概述 SELinux(Security-Enhanced Linux)是一个Linux内核模块和用户空间工具的集合,提供强制访问控制(MAC)机制。Android引入SELinux以增强系统的安全性,通过限制进程的权限来减少安全漏洞的…...
遥感智能体模块全景解析:从任务拆解到工作流编排
1. 遥感智能体的核心架构设计 第一次接触遥感智能体(RS-Agent)这个概念时,很多人会感到困惑:它和传统遥感处理软件有什么区别?简单来说,RS-Agent更像是一个"会思考的助手"。我参与过几个遥感智能…...
Jieba分词实战:5分钟搞定中文文本词频统计(附完整代码)
Jieba分词实战:5分钟搞定中文文本词频统计(附完整代码) 中文文本处理是自然语言处理(NLP)的基础环节,而分词则是中文文本处理的第一步。不同于英文等空格分隔的语言,中文文本需要专门的工具进行…...
极客专属:OpenClaw+百川2-13B打造个人CLI智能助手
极客专属:OpenClaw百川2-13B打造个人CLI智能助手 1. 为什么开发者需要命令行智能助手 作为一个长期与终端打交道的开发者,我每天要重复执行大量机械操作:查看日志、运行测试、整理结果。这些工作虽然简单,却极其消耗精力。直到我…...
企业级 Agent SKILL 最佳实践
最近,真的是屁颠屁颠地使用Openclaw作为业务核心为客户打造智能体的工作流程,包括组织、业务、技术三个全面的转型。同时,由于OpenAI的Sora下线,年初刚刚建立的AI漫剧工作流,资产库以及提示词都需要转换成替代品。还有…...
TscanCode静态代码扫描工具原理与实践
嵌入式静态代码扫描工具TscanCode深度解析1. 静态代码分析技术概述1.1 静态代码扫描原理静态代码扫描是一种在不实际执行程序的情况下,通过词法分析、语法分析、控制流和数据流分析等技术对源代码进行检测的方法。这种技术能够有效识别代码中潜在的错误和缺陷&#…...
SQLite.Interop.DLL加载失败的3种修复方案 - 从运行库到项目配置全搞定
SQLite.Interop.DLL加载失败的终极解决方案:从运行环境到项目配置深度解析 当你正在开发一个依赖SQLite数据库的C#项目时,突然遇到"无法加载DLLSQLite.Interop.DLL"的错误提示,这绝对是一个令人头疼的问题。作为一名有多年.NET开发…...
从零开始:如何用Python训练一个AI模型(超详细教程)
引言 人工智能(AI)——一个熟悉又神秘的词汇。我们常听说它可以生成诗歌、编写代码、创作艺术,甚至回答各种问题。然而,当你想亲手实现一个“AI 模型”时,却可能感到无从下手。这篇教程正是为你准备的,将带…...
【AI+教育】AI总犯“金鱼记忆”?揭秘大模型长期记忆架构,让它真正记住你!
在和AI对话时,你是否有过这样的抓狂时刻:前脚刚告诉它“我叫小明,我不吃香蕉”,五分钟后它又热情地向你推荐香蕉饼? 目前的多数大语言模型就像拥有“金鱼记忆”,一刷新就忘得一干二净。为了让智能体(Agent)能像真正的老朋友一样懂你,我们设计了一套长期记忆功能模块。…...
MATLAB驱动的焊接机器人智能轨迹优化与动态仿真实践
1. 焊接机器人轨迹优化的技术挑战 焊接机器人在现代制造业中扮演着越来越重要的角色,但要让机器人焊得又快又好,可不是件简单的事。想象一下,你要用焊枪在复杂的三维曲面上画出一条完美的焊缝,既要保证焊接质量,又要避…...
AOP 失效的 7 种死法与复活指南
还是那句话,知识是一个返回的过程,追一句:时间出真知今天我们要聊的是一个“灵异事件”频发的领域——Spring AOP 失效。你是不是也经历过这种崩溃:“明明加了 Transactional,为什么数据库报错不回滚?” “…...
