鸿蒙实现自定义Tabbar样式,显示数字红点提示

前言:

DevEco Studio版本:4.0.0.600

Tabs的链接参考:OpenHarmony Tabs

TabContent的链接参考:OpenHarmony TabContent

通过查看链接参考我们知道可以通过TabContent的tabBar来实现自定义TabBar样式(CustomBuilder)

实现效果:

具体实现逻辑:

1、自定义样式

@Builder
tabBuilder(index: number, name: string) {RelativeContainer() {Text(name).id("textTab").fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor).fontSize(16).fontWeight(this.currentIndex === index ? 8 : 4).margin({ top: 17, bottom: 7 }).alignRules({center: { anchor: '__container__', align: VerticalAlign.Center }, //竖直居中middle: { anchor: '__container__', align: HorizontalAlign.Center }//水平居中})Text("5").id("textDot").textAlign(TextAlign.Center).backgroundColor(Color.Red).borderRadius(10).fontSize(12).fontColor(Color.White).width(20).height(20).alignRules({left: { anchor: 'textTab', align: HorizontalAlign.End },center: { anchor: 'textTab', align: VerticalAlign.Center }})Divider().id("dividerTab").strokeWidth(this.strokeWidth).color('#007DFF').opacity(this.currentIndex === index ? 1 : 0).alignRules({bottom: { anchor: '__container__', align: VerticalAlign.Bottom }, //竖直居中middle: { anchor: '__container__', align: HorizontalAlign.Center }//水平居中})}.width('100%')
}

2、完整代码:

@Entry
@Component
struct Index {@State fontColor: string = '#111111'@State selectedFontColor: string = '#007DFF'@State currentIndex: number = 0private controller: TabsController = new TabsController()@State strokeWidth: number = 3 //下划线的宽度@Builder
tabBuilder(index: number, name: string) {RelativeContainer() {Text(name).id("textTab").fontColor(this.currentIndex === index ? this.selectedFontColor : this.fontColor).fontSize(16).fontWeight(this.currentIndex === index ? 8 : 4).margin({ top: 17, bottom: 7 }).alignRules({center: { anchor: '__container__', align: VerticalAlign.Center }, //竖直居中middle: { anchor: '__container__', align: HorizontalAlign.Center }//水平居中})Text("5").id("textDot").textAlign(TextAlign.Center).backgroundColor(Color.Red).borderRadius(10).fontSize(12).fontColor(Color.White).width(20).height(20).alignRules({left: { anchor: 'textTab', align: HorizontalAlign.End },center: { anchor: 'textTab', align: VerticalAlign.Center }})Divider().id("dividerTab").strokeWidth(this.strokeWidth).color('#007DFF').opacity(this.currentIndex === index ? 1 : 0).alignRules({bottom: { anchor: '__container__', align: VerticalAlign.Bottom }, //竖直居中middle: { anchor: '__container__', align: HorizontalAlign.Center }//水平居中})}.width('100%')
}build() {Column() {Tabs({ barPosition: BarPosition.Start, index: this.currentIndex, controller: this.controller }) {TabContent() {Column().width('100%').height('100%').backgroundColor('#00CB87')}.tabBar(this.tabBuilder(0, 'green'))TabContent() {Column().width('100%').height('100%').backgroundColor('#007DFF')}.tabBar(this.tabBuilder(1, 'blue'))TabContent() {Column().width('100%').height('100%').backgroundColor('#FFBF00')}.tabBar(this.tabBuilder(2, 'yellow'))TabContent() {Column().width('100%').height('100%').backgroundColor('#E67C92')}.tabBar(this.tabBuilder(3, 'pink'))}.vertical(false).barMode(BarMode.Fixed).barHeight(56).animationDuration(400).onChange((index: number) => {this.currentIndex = index}).width('100%').height('100%').backgroundColor('#F1F3F5')}.width('100%')}
}

总结:

上面的逻辑介绍是提供一种思路,根据这个思路我们可以自定义很多的TabBar的样式,来满足我们的业务需求,比如可以修改间距、颜色、大小、宽度、添加红点等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CloudTopExam考试系统

前言 整个项目的都是自己从0到1完成的(包括数据库设计)。 这个项目耗费了自己的很多心血,尤其是数据库的设计(中途推翻重做了好几次💔)。在做这个之前也看过很多类似的开源项目,相较于商用的产品…

第六节 未登录与登录分支设立

经常我们在设计中,经常会遇到多条件分支打开相关界面,下面重点基于一个控件判断对未登录与已登录分支跳转案例进行说明。 一、设置元件 注意:动态面板默认设置 二、设置隐藏面板 三、关联条件情形 1、设置触发事件的元件 2、启用情形 3、添加情形,增加面板中“未登录”为…

文件操作(2)(C语言版)

文件的随机读写: fseek函数: 前面讲解了顺序读写的相关函数,这里介绍一些可以“指哪写哪的函数” 有三个参数: 1、文件的地址 2、相对于第三个参数origin偏移的位置 3、起始位置(有三种) 第一种&#xff…

参数搜索流形学习

目录 一、网格搜索1、介绍2、代码示例 二、HalvingGridSearch1、介绍2、代码示例 三、随机搜索1、介绍2、代码示例 三、贝叶斯搜索1、介绍2、代码示例 四、参数搜索总结五、流形学习1、LLE1、介绍2、官方代码示例 2、t-SNE1、介绍2、官方代码示例 一、网格搜索 1、介绍 网格搜…

Matlab复数相关

文章目录 MATLAB复数相关知识相关函数 MATLAB复数相关知识 相关函数 假定存在复数zabi 函数说明real(z)返回复数z的实部(a)imag(z)返回复数z的虚部(b)abs(z)返回复数的模即|z| ( ( a 2 ) ( b 2 ) \sqrt{(a^2)(b^2)…

基于深度学习的文字识别

基于深度学习的文字识别 基于深度学习的文字识别(Optical Character Recognition, OCR)是指利用深度神经网络模型自动识别和提取图像中的文字内容。这一技术在文档数字化、自动化办公、车牌识别、手写识别等多个领域有着广泛的应用。 深度学习OCR的基本…

重生奇迹MU召唤术师简介

出生地:幻术园 性 别:女 擅 长:召唤幻兽、辅助魔法&攻击魔法 转 职:召唤巫师(3转) 介 绍:从古代开始流传下来的高贵的血缘,为了种族纯正血缘的延续及特殊使用咒术的天赋&…

实时监听 localStorage 变化的实现方法

很多时候,我们在A页面通过点击之类的操作获得一个数值,然后拿到B页面使用,我们希望这个值是响应式的,当然你可以使用vue或者react的实现,这篇文章适合想偷懒或者很多后端小伙不愿意去用的使用,效果是差不多…

uniapp原生插件开发实战——Android打开文件到自己的app

项目配置 原生Module类插件创建详情请看uniapp原生插件开发实战——集成Android端的Twitter登陆 配置build.gradle: apply plugin: com.android.library android {... }repositories {flatDir {dirs libs} }dependencies {// 添加uniapp必要的依赖,参考同上compileOnly an…

iOS 中 attribute((constructor)) 修饰的函数

开发环境声明:此文描述的 attribute((constructor)) 特指使用 Objective-C 开发 iOS、MacOS,Swift 语言不支持这种属性修饰符。 初识 attribute((constructor)) 在 Objective-C 开发中,attribute((constructor)) 是一个 GCC 和 Clang 编译器…

网络变压器内部加电容起什么作用

网络变压器内部加入电容的作用是多方面的,主要涉及信号耦合、电磁兼容(EMC)和信号完整性(SI)等方面。下面详细解释: 1. **信号耦合**: 网络变压器的主要功能是增加信号的传输距离和提升信号…

【前端】 nvm安装管理多版本node、 npm install失败解决方式

【问题】If you believe this might be a permissions issue, please double-check the npm ERR! permissio或者Error: EPERM: operation not permitted, VScode中npm install或cnpm install报错 简单总结,我们运行npm install 无法安装吧包,提示权限问题…

友思特应用 | 模型链接一应俱全:IC多类别视觉检测一站式解决方案

导读 高精度IC制造工艺需要对产品进行全方位检测以保证工艺质量过关。友思特 Neuro-T 通过调用平台的流程图功能,搭建多类深度学习模型,形成了一站式的视觉检测解决方案。本文将为您详述方案搭建过程与实际应用效果。 在当今集成电路(IC&…

谷歌浏览器切换tab栏时页面释放内存导致echarts不显示问题

在初始化echarts时添加下述监听 // 添加事件监听器document.addEventListener("visibilitychange", this.handleVisibilityChange);handleVisibilityChange() {if (document.visibilityState visible) {// 页面处于活动状态,手动触发图表的更新或重新绘…

SuiNS更新命名标准,增强用户体验

SuiNS将其面向用户的命名标准从 xxx.sui 更新为 xxx,让用户能够以一种适用于Web2和Web3世界的方式来代表自己。通过此更新,用户可以在其选择的名称前使用 ,而不是在名称后添加 .sui。 Sui命名服务于去年推出,旨在使Sui上的地址更…

TypeScript写好了,怎么运行啊!!!

环境搭建 Vs code Ctrlshiftp打开首选项—》打开工作区设置—》搜索Typescript 推荐开启的配置项主要是这几个: Function Like Return Types,显示推导得到的函数返回值类型;Parameter Names,显示函数入参的名称;Par…

Vxe UI vxe-modal 实现窗口的最大化与最小化,实现弹出多窗口

Vxe UI vue vxe-modal 实现窗口的最大化与最小化,实现弹出多窗口 通过js方式调用 js方式脱离模板,每次创建是多个实例。 mask:关闭遮罩层,如果不关闭则会显示遮罩层,就不能实现同时操作多窗口 lockView:…

win11右键小工具

开头要说的 在日常使用场景中,大家如果用的是新的笔记本电脑,应该都是安装的win11系统, 当然win11系统是最被诟病的, 因为有很多人觉得很难操作, 就比如一个小小的解压操作, 在win7和win10上&#xff…

Kubernetes CSR 颁发的 MinIO Operator 证书

在当前的 Kubernetes 环境中,创建、管理和自动化 TLS 证书的标准方法是使用 kind: CertificateSigningRequest (CSR)资源。此原生 Kubernetes 资源提供了一种强大而高效的方式来处理集群中证书的整个生命周期。 通过利用 CSR 资源&#xff0…

小山菌_代码随想录算法训练营第二十六天| 39. 组合总和 、40.组合总和II 、 131.分割回文串

39. 组合总和 文档讲解:代码随想录.组合总和 视频讲解:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)| 回溯法精讲! 状态:已完成 代码实现 class Solution {private:vecto…