尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

HarmonyOS应用开发实战:猫猫大作战-Tabs 的声明式用法、自定义 TabBar 样式、事件监听和性能优化

HarmonyOS应用开发实战:猫猫大作战-Tabs 的声明式用法、自定义 TabBar 样式、事件监听和性能优化
📅 发布时间:2026/7/28 0:27:00

前言

在多页面应用中,底部导航栏是最常见的导航模式之一——微信、淘宝等主流应用都采用 Tab 切换不同功能模块。HarmonyOS 的Tabs组件提供了原生的底部/顶部导航能力,配合TabContent容器实现标签页切换。

本文以「猫猫大作战」中“主页/排行榜/我的“三个 Tab 页面为锚点,讲解 Tabs 的声明式用法、自定义 TabBar 样式、事件监听和性能优化。

提示:本系列不讲 ArkTS 基础语法与环境搭建,假设你已跟完第 1–88 篇。本篇是阶段三第 89 篇。

一、Tabs 基本结构

1.1 标准结构

Tabs() { TabContent() { // Tab 1: 主菜单 MainMenuPage() } .tabBar('主页') TabContent() { // Tab 2: 排行榜 LeaderboardPage() } .tabBar('排行榜') TabContent() { // Tab 3: 个人中心 ProfilePage() } .tabBar('我的') } .barPosition(BarPosition.End) // TabBar 在底部

1.2 组件层次

Tabs(导航容器) ├── TabContent(主页) → .tabBar('主页') ├── TabContent(排行榜) → .tabBar('排行榜') └── TabContent(我的) → .tabBar('我的')

二、自定义 TabBar 样式

2.1 使用 @Builder

@Entry @Component struct GameTabs { @State currentIndex: number = 0; @Builder TabBarItem(index: number, icon: string, label: string, activeIcon: string) { Column() { Image(this.currentIndex === index ? activeIcon : icon) .width(24).height(24) Text(label) .fontSize(12) .fontColor(this.currentIndex === index ? '#2ECC71' : '#999') } } build() { Tabs({ index: this.currentIndex }) { TabContent() { MainMenuPage() } .tabBar(this.TabBarItem(0, 'icon_home', '主页', 'icon_home_active')) TabContent() { LeaderboardPage() } .tabBar(this.TabBarItem(1, 'icon_rank', '排行', 'icon_rank_active')) TabContent() { ProfilePage() } .tabBar(this.TabBarItem(2, 'icon_me', '我的', 'icon_me_active')) } .onChange((index) => { this.currentIndex = index }) .barPosition(BarPosition.End) } }

三、事件监听

Tabs({ index: this.currentIndex }) { // TabContent 列表 } .onChange((index: number) => { console.info(`切换到 Tab ${index}`); this.currentIndex = index; }) .onAnimationStart((index, targetIndex) => { console.info(`动画开始: ${index} → ${targetIndex}`); }) .onAnimationEnd((index, targetIndex) => { console.info(`动画结束: ${index} → ${targetIndex}`); })

四、总结

Tabs 组件提供了声明式的多 Tab 容器和自定义 TabBar 支持,通过tabBar绑定每个标签页内容。

核心要点:

  • Tabs + TabContent 构成声明式 Tab 导航
  • .tabBar()支持字符串和@Builder自定义
  • .barPosition()控制 TabBar 在顶部或底部
  • .onChange()监听切换事件

下一篇预告:第 90 篇将深入 TabContent 内容区的懒加载和生命周期管理。

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


相关资源:

  • Tabs 组件参考
  • TabContent 组件参考
  • 开源鸿蒙跨平台社区
  • 第 88 篇:Split 分栏模式
  • 第 90 篇:TabContent

相关新闻

  • 洛阳正规的二手选矿设备回收 贴心解决旧矿山设备处置难题 - 热点品牌推荐
  • 通州区厕所漏水维修哪家靠谱?本地老师傅推荐这家 - 热点品牌推荐
  • RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

最新新闻

  • 四川防火卷帘门优质厂商怎么选择 实用选品攻略分享 - 热点品牌推荐
  • 2026济南商务车租赁主流服务商实测排行参考 - 起跑123
  • 2026 乌鲁木齐阳台漏水防冻方案,阳台冬季积雪堆积融化渗水,业主咨询阳台整体防冻防水,地漏、护栏根部抗冻防渗处理,完工耐高低温使用年限说明。 - 伶鹿到家
  • 2026年山东地区冷饮机回收公司找哪家省心高效专业 - 热点品牌推荐
  • 广州花都区水帘漏水维修仓库专业团队就近上门服务 - 热点品牌推荐
  • 西南地区预制菜给袋式真空包装机工厂电话查询与选购指南 - 热点品牌推荐

日新闻

  • 力旷智能:伺服驱动系统在制药收瓶设备中的应用解析
  • 2026 网安入门避坑指南,零基础如何避开无效学习直接上手实战
  • 揭秘CFC项目:如何通过手机摄像头实现850kbps无网络文件传输

周新闻

  • 大连理工大学与东京大学联手打造的“主动型AI助手“
  • 170.2026年国家级科研瓶颈:超精密单点金刚石切削(SPDT)光学表面生成
  • SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号