当前位置: 首页 > 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.gsyq.cn/news/1464566.html

相关文章:

  • 除了verify=False,安全处理requests库SSL证书验证的3种更优实践(附避坑指南)
  • 数据科学家不是建模工程师:一份真实工作流的生存手记
  • 数据科学中的推断统计实战:从AB测试到置信区间
  • 从外卖配送区到共享单车电子围栏:JTS实战解析空间关系判断(Contains/Within/Intersects)
  • 企业级AI分类系统上线倒计时72小时:紧急补漏清单(含权限穿透、语义漂移、冷启动三重熔断机制)
  • 社区搜索技术:从同质图到异质图的算法演进
  • MTKClient终极指南:联发科设备刷机救砖专业工具详解
  • 从数电实验箱到FPGA开发板:重温74LS138三八译码器,并用它搭建全加器电路
  • 别再手动修模型了!用Python的scipy.spatial.Delaunay快速搞定点云三角化(附实战代码)
  • 从HFSS仿真到PCB打样:手把手教你搞定四臂螺旋天线的移相功分网络
  • 别再凭感觉绕电感了!手把手教你用200股李兹线给T106-2磁环绕制4.5uH电感(附计算与实测翻车记录)
  • 面试必问!!!:整数在计算机中是怎么保存的?
  • Java:Java后端开发,本地开发环境,服务器部署环境,运维支撑环境 都需要哪些类别的工具或技术 / Java后端三大环境完整清单 202606
  • 论文AIGC率怎么降?2026实测SpeedAI领跑多平台横评 - 仙仙学姐测评
  • Inference与Prediction的本质区别:从机器学习工程实践看系统层与算法层的分界
  • 115. 全机型救砖方案汇总|高通EDL/MTK刷写/苹果DFU黑砖修复实操教程
  • 2026年靠谱的郑州家装淋浴房/淋浴房/郑州成品淋浴房/郑州民宿淋浴房高口碑品牌推荐 - 品牌宣传支持者
  • 从充电场站到干线物流:千方 ESG 报告里的多场景节能探索
  • 快速验证物联网想法:用快马一键生成esp8266 wifi连接原型代码
  • TradingAgents 新手快速上手指南
  • 从游戏地形到有限元分析:深入理解Delaunay三角剖分的‘空圆’特性为什么这么重要
  • iOS 开发面试 50 个高频易混淆知识点详解
  • 稀土功能高分子在涂层涂料领域的应用浅析
  • 从SJA1000到现代MCU:聊聊CAN控制器硬件架构的演变与选型
  • 搞地图开发必懂的坐标系‘黑话’:WGS84、GCJ02、BD09、CGCS2000到底啥关系?
  • 除了Java,用Python/Node.js也能解密抖音用户手机号?
  • Day 1 :项目全景 + 第一条完整后端链路
  • C++学习笔记系列1-3
  • 别再只盯着特征值了!用Python和NumPy玩转‘矩阵束’,解决广义特征值问题
  • 2026初级会计实务公式重点归纳|计算题必备公式PDF