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

HarmonyOS 6 AtomicServiceTabs 纯图标样式使用文档

文章目录

    • 纯图标样式核心实现原理
      • 1. TabBarOptions 构造方法说明
      • 2. 核心样式区分
    • 完整代码
    • 核心参数
      • 1. 页面内容配置 tabContents
      • 2. 纯图标导航栏配置 tabBarOptionsArray
      • 3. 导航栏位置 tabBarPosition
      • 4. 导航栏背景 barBackgroundColor
    • 事件回调说明
      • 1. onTabBarClick 图标点击回调
      • 2. onContentWillChange 页面切换前置回调
    • 总结

纯图标样式核心实现原理

1. TabBarOptions 构造方法说明

newTabBarOptions(icon资源,文字文本,未选中图标色,选中图标色)

纯图标样式配置规则:

  1. 第二个文本参数传空字符串'',隐藏所有标签文字;
  2. 第一个参数传入系统图标资源/本地图片资源;
  3. 通过第三、第四个参数区分未选中图标颜色选中图标颜色
  4. 无需额外文字布局配置,组件自动适配纯图标排版。

2. 核心样式区分

配置项纯图标样式填写规范
icon传入系统内置图标资源$r('sys.media.xxx')或本地媒体资源
text固定填写空字符串'',隐藏文字
textColor未选中状态下图标渲染颜色
selectedColor选中状态下图标渲染颜色

完整代码

// Index.ets import { AtomicServiceTabs, TabBarOptions, TabBarPosition, OnContentWillChangeCallback } from '@kit.ArkUI'; @Entry @Component struct Index { @State message: string = '首页'; @State onClickNumber: number = 0; @State currentIndex: number = 0; @State comingIndex: number = 0; onContentWillChangeCallBack: OnContentWillChangeCallback = (currentIndex: number, comingIndex: number): boolean => { this.currentIndex = currentIndex; this.comingIndex = comingIndex; console.info('OnContentWillChangeCallback') return true; } onTabClick: Callback<number> = (index:number)=>{ this.onClickNumber ++; console.info('onTabClick'); } @Builder tabContent1() { Column().width('100%').height('100%').alignItems(HorizontalAlign.Center).backgroundColor('#00CB87') } @Builder tabContent2() { Column().width('100%').height('100%').backgroundColor('#007DFF') } @Builder tabContent3() { Column().width('100%').height('100%').backgroundColor('#FFBF00') } build() { Stack() { AtomicServiceTabs({ tabContents: [ () => { this.tabContent1() }, () => { this.tabContent2() }, () => { this.tabContent3() } ], tabBarOptionsArray: [ new TabBarOptions($r('sys.media.ohos_ic_public_phone'), '', Color.Black, Color.Blue), new TabBarOptions($r('sys.media.ohos_ic_public_location'), '', Color.Black, Color.Blue), new TabBarOptions($r('sys.media.ohos_ic_public_more'), '', Color.Black, Color.Blue), ], tabBarPosition: TabBarPosition.BOTTOM, barBackgroundColor: $r('sys.color.ohos_id_color_bottom_tab_bg'), onTabBarClick:this.onTabClick, onContentWillChange: this.onContentWillChangeCallBack, }) Column() { Text("onchange回调次数:" + this.onClickNumber) Text("comingIndex = " + this.comingIndex + ", currentIndex = " + this.currentIndex) }.margin({top:500}) }.height('100%') } }

运行效果如图:


核心参数

1. 页面内容配置 tabContents

  • 类型:Array<()=>void>
  • 作用:绑定每一个图标标签对应的页面内容
  • 写法:通过@Builder构建页面布局,以箭头函数形式传入数组

2. 纯图标导航栏配置 tabBarOptionsArray

为本文档纯图标样式核心配置,数组内依次对应每一项导航图标:

newTabBarOptions($r('sys.media.ohos_ic_public_phone'),// 系统图标资源'',// 文本置空,实现纯图标Color.Black,// 未选中图标颜色Color.Blue// 选中图标颜色)

3. 导航栏位置 tabBarPosition

  • TabBarPosition.BOTTOM:底部展示图标导航(常用)
  • TabBarPosition.TOP:顶部展示图标导航

4. 导航栏背景 barBackgroundColor

支持系统颜色资源、自定义颜色值,统一设置纯图标导航栏整体背景底色。


事件回调说明

1. onTabBarClick 图标点击回调

  • 触发时机:点击任意导航图标立即触发
  • 入参:index当前点击图标下标
  • 用途:统计点击次数、单独处理图标点击业务逻辑

2. onContentWillChange 页面切换前置回调

  • 触发时机:页面正式切换之前执行
  • 入参:
    • currentIndex:当前停留页面下标
    • comingIndex:即将跳转的页面下标
  • 返回值:
    • true:允许正常切换页面
    • false:拦截页面切换,停留在当前页面
  • 适用场景:切换页面前权限校验、数据保存、弹窗提示等

总结

  1. 工程限制
    AtomicServiceTabs仅支持鸿蒙原子服务工程,标准应用工程引入后无法渲染、无点击交互,属于组件本身环境限制。
  2. 资源规范
    纯图标优先使用鸿蒙系统公共图标资源,减少本地图片体积,适配多设备分辨率。
  3. 版本适配
    最低适配 HarmonyOS 5 及以上,HarmonyOS 6 完整兼容全部新增回调与样式能力。
  4. 样式禁止改动
    如需保持标准纯图标样式,不可将第二个空文本参数填写文字,否则会变成图文混合导航。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

http://www.jsqmd.com/news/952947/

相关文章:

  • 数据科学家不是建模工程师:一份真实工作流的生存手记
  • XUnity.AutoTranslator架构深度解析:Unity游戏实时翻译引擎的技术实现
  • 基于微信小程序的复习计划管理系统源码+论文
  • 亲测能降到0%!免费降AI率靠谱吗?10款工具实测,论文降AIGC必看 - agihub
  • 数据科学中的推断统计实战:从AB测试到置信区间
  • 从外卖配送区到共享单车电子围栏:JTS实战解析空间关系判断(Contains/Within/Intersects)
  • 别再手动算CRC了!用STM32CubeMX的硬件CRC模块,5分钟搞定数据校验
  • HarmonyOS 6 AtomicServiceTabs 图标加文本(自定义图文排布)使用文档
  • SpringBoot+Vue高校机动车认证信息管理系统源码+论文
  • 免费降重工具精选:AI智能改写高效降低重复率 - 仙仙学姐测评
  • Python map、filter、zip 三大函数式核心用法与工程实践
  • 别再踩坑了!手把手教你用Selenium驱动360极速浏览器(附版本匹配避坑指南)
  • 企业级AI分类系统上线倒计时72小时:紧急补漏清单(含权限穿透、语义漂移、冷启动三重熔断机制)
  • 社区搜索技术:从同质图到异质图的算法演进
  • SpringBoot+Vue高校教室设备故障报修信息管理系统源码+论文
  • 2026年评价高的光伏支架主流厂家对比评测 - 品牌宣传支持者
  • 2026年口碑好的舟山工业园区/定海工业园区/浙江工业园区热门排行榜 - 行业平台推荐
  • 从数电实验箱到FPGA开发板:重温74LS138三八译码器,并用它搭建全加器电路
  • 别再手动修模型了!用Python的scipy.spatial.Delaunay快速搞定点云三角化(附实战代码)
  • PhysicsFormer:Transformer在物理信息神经网络中的创新应用
  • 从HFSS仿真到PCB打样:手把手教你搞定四臂螺旋天线的移相功分网络
  • MTKClient终极指南:联发科设备刷机救砖专业工具详解
  • 别再凭感觉绕电感了!手把手教你用200股李兹线给T106-2磁环绕制4.5uH电感(附计算与实测翻车记录)
  • 面试必问!!!:整数在计算机中是怎么保存的?
  • 论文AIGC率怎么降?2026实测SpeedAI领跑多平台横评 - 仙仙学姐测评
  • Java:Java后端开发,本地开发环境,服务器部署环境,运维支撑环境 都需要哪些类别的工具或技术 / Java后端三大环境完整清单 202606
  • 小Why的密码锁【牛客tracker 每日一题】
  • Inference与Prediction的本质区别:从机器学习工程实践看系统层与算法层的分界
  • 从Hello World到第一个项目:用VS Code + Rust-Analyzer插件打造你的高效Rust工作流
  • 别只盯着物种丰度图了!16S报告里这3个高级功能(LEfSe、FAPROTAX、随机森林)才是发文章的关键