HarmonyOS应用开发实战:萌宠日记 - 快捷操作图标网格布局
HarmonyOS应用开发实战萌宠日记 - 快捷操作图标网格布局前言快捷操作栏是首页中用户快速访问各功能模块的入口。在萌宠日记的首页中我们使用5 个快捷操作图标日记、档案、健康、相册、更多采用Row 水平布局 layoutWeight 等分的方式实现了均匀分布的图标网格。本文将从萌宠日记的快捷操作栏实现出发深入解析 Row 布局的等分机制、layoutWeight 的用法、图标与文字的垂直排列以及交互反馈的设计。一、快捷操作栏整体设计1.1 数据模型// HomePage.ets — 快捷操作数据结构 interface QuickAction { icon: string // Emoji 图标 label: string // 标签文字 color: string // 背景色 } private quickActions: QuickAction[] [ { icon: , label: 日记, color: #FFF3E0 }, { icon: , label: 档案, color: #E3F2FD }, { icon: , label: 健康, color: #E8F5E9 }, { icon: , label: 相册, color: #FCE4EC }, { icon: ⚙️, label: 更多, color: #F3E5F5 } ]1.2 布局渲染Row({ space: 8 }) { ForEach(this.quickActions, (action: QuickAction) { Column({ space: 6 }) { // 图标容器 Column() { Text(action.icon).fontSize(24) } .width(48).height(48) .backgroundColor(action.color) .borderRadius(14) .justifyContent(FlexAlign.Center) // 标签文字 Text(action.label) .fontSize(12) .fontColor(#666666) } .layoutWeight(1) // 等分宽度 .alignItems(HorizontalAlign.Center) .onClick(() { if (action.label 档案 this.onNavigateToPetProfile) { this.onNavigateToPetProfile() } }) }) } .width(100%) .padding({ left: 16, right: 16 })提示layoutWeight(1)是 ArkUI 中实现等分布局的核心属性。所有设置了相同layoutWeight的子组件会平分父容器的剩余空间非常适合实现 Tab 导航、图标网格等场景。二、layoutWeight 等分机制2.1 工作原理Row({ space: 8 }) { Column().layoutWeight(1) // 占 1 份 Column().layoutWeight(1) // 占 1 份 Column().layoutWeight(1) // 占 1 份 Column().layoutWeight(1) // 占 1 份 Column().layoutWeight(1) // 占 1 份 }宽度计算方式父容器宽度 360vp以标准手机为例 间距总和 8vp × 44 个间隔 32vp 剩余宽度 360 - 32 328vp 每个 layoutWeight(1) 的宽度 328 / 5 65.6vp2.2 layoutWeight 与固定宽度的对比布局方式代码特点layoutWeightlayoutWeight(1)动态分配自适应屏幕宽度固定宽度width(60)固定值不同屏幕下表现不一致百分比width(20%)按比例但需手动计算2.3 layoutWeight 参数参数值含义效果layoutWeight(1)权重为 1所有子组件等分layoutWeight(2)权重为 2占其他组件的 2 倍宽度layoutWeight(0)权重为 0不参与等分按内容自适应三、图标容器设计3.1 图标容器Column() { Text(action.icon) // 使用 Emoji 作为图标 .fontSize(24) } .width(48) // 固定宽度 .height(48) // 固定高度 .backgroundColor(action.color) // 每个图标不同的背景色 .borderRadius(14) // 圆角 .justifyContent(FlexAlign.Center) // 图标居中3.2 图标尺寸参数参数值说明图标容器宽高48×48vp适中的图标大小图标字号24fpEmoji 在 24fp 下清晰可辨圆角14vp圆角矩形柔和现代背景色各图标不同区分不同功能模块3.3 各图标的配色方案图标标签背景色色值寓意日记浅橙#FFF3E0温暖、记录档案浅蓝#E3F2FD沉稳、资料健康浅绿#E8F5E9健康、生机相册浅粉#FCE4EC甜美、回忆⚙️更多浅紫#F3E5F5功能、设置四、标签文字设计4.1 文字样式Text(action.label) .fontSize(12) // 小字号节省空间 .fontColor(#666666) // 灰色不抢眼4.2 图标与文字的间距Column({ space: 6 }) { // 图标容器 // 标签文字 }space: 6控制图标与文字的垂直间距在 48×48 的图标下方跟随 12fp 的文字6vp 的间距刚好合适。五、交互反馈5.1 点击事件.onClick(() { if (action.label 档案 this.onNavigateToPetProfile) { this.onNavigateToPetProfile() } // 其他图标的点击事件可扩展 })5.2 点击交互策略图标点击行为实现状态日记切换到日记 Tab 待实现档案导航到宠物档案页✅ 已实现健康切换到记录 Tab 待实现相册导航到相册页 待实现更多弹出更多操作 待实现六、布局响应式6.1 不同屏幕宽度下的表现// 使用 layoutWeight 自动适配不同屏幕 // 360vp 手机每个图标 ≈ 65.6vp // 390vp 手机每个图标 ≈ 71.6vp // 414vp 手机每个图标 ≈ 76.4vp // 600vp 平板每个图标 ≈ 113.6vp // 大屏下图标和文字可以适当放大 if (screenWidth 600) { // 大屏适配 }6.2 响应式适配屏幕宽度图标容器字号间距 360vp40×4020fp4vp360-414vp48×4824fp6vp414-600vp56×5628fp8vp 600vp64×6432fp10vp七、ForEach 渲染对比7.1 手动渲染 vs ForEach// 手动渲染不推荐 Row({ space: 8 }) { // 日记 Column() { Text().fontSize(24) }.width(48).height(48) // 档案 Column() { Text().fontSize(24) }.width(48).height(48) // 健康 Column() { Text().fontSize(24) }.width(48).height(48) // 相册 Column() { Text().fontSize(24) }.width(48).height(48) // 更多 Column() { Text(⚙️).fontSize(24) }.width(48).height(48) } // ForEach 渲染推荐 Row({ space: 8 }) { ForEach(this.quickActions, (action: QuickAction) { Column() { Text(action.icon).fontSize(24) } .width(48).height(48) }) }7.2 ForEach 的优势优势说明代码简洁数据驱动减少重复代码易于维护修改数据即可更新 UI扩展性强增加/减少操作项只需修改数据类型安全通过接口定义类型编译时检查八、交互扩展8.1 点击反馈// 添加点击涟漪效果 Column({ space: 6 }) { Column() { Text(action.icon).fontSize(24) } .width(48).height(48) .backgroundColor(action.color) .borderRadius(14) .justifyContent(FlexAlign.Center) .clickEffect({ level: ClickEffectLevel.LIGHT }) // 点击涟漪效果 Text(action.label).fontSize(12).fontColor(#666666) } .layoutWeight(1) .alignItems(HorizontalAlign.Center) .onClick(() { // 点击处理 })8.2 长按菜单.onLongClick(() { // 长按显示快捷操作说明 console.log(Long pressed:, action.label) // 可弹出 Toast 提示 })九、无障碍适配9.1 无障碍描述Column({ space: 6 }) { // 图标和文字 } .layoutWeight(1) .alignItems(HorizontalAlign.Center) .accessibilityText(${action.label}功能) // 如日记功能 .onClick(() { // 处理点击 })十、最佳实践10.1 设计原则有序列表 — 快捷操作栏设计的 5 个原则数量适中3-5 个快捷操作最为合适过多会显得拥挤图标语义化每个图标应直观表达功能含义配色区分不同功能使用不同的背景色便于视觉区分文字辅助图标下方配合文字标签避免歧义点击区域充足每个操作项的点击区域至少 44×44vp10.2 萌宠日记快捷操作栏总结设计要素值说明布局方式Row layoutWeight(1)等分 5 列图标大小48×48vp适中尺寸图标字号24fpEmoji 清晰显示标签字号12fp小号辅助文字圆角14vp圆角矩形图标-文字间距6vp紧凑排列操作项间距8vpRow 的 space 参数总结本文从萌宠日记的快捷操作图标网格布局实现出发深入解析了等分布局的完整方法数据驱动通过 QuickAction 接口定义操作项数据layoutWeight 等分Row layoutWeight(1) 实现均匀分布图标容器48×48vp 的圆角容器配以不同背景色标签文字12fp 小字号辅助文字交互反馈onClick 点击处理、clickEffect 涟漪效果响应式布局不同屏幕宽度下的自适应适配ForEach 渲染数据驱动 UI 的最佳实践无障碍适配accessibilityText 添加功能描述快捷操作栏是用户与功能模块交互的快捷入口合理的设计能显著提升应用的操作效率。下一篇我们将深入今日记录卡片与文本溢出处理解析首页中今日记录区的内容展示与文本截断。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Row 组件参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-container-rowlayoutWeight 属性https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-universal-attributes-layout-constraintsForEach 使用https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-foreach点击效果https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-universal-attributes-click-effect响应式布局指导https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/responsive-layout无障碍开发https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/accessibility-kit颜色使用规范https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/color-usage交互反馈设计https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/interaction-feedback

相关新闻

HarmonyOS应用开发实战:萌宠日记 - 参数化路由

HarmonyOS应用开发实战:萌宠日记 - 参数化路由

HarmonyOS应用开发实战:萌宠日记 - 参数化路由 前言 在 萌宠日记 中,参数化路由 是页面间数据传递的另一种重要方式。与 回调函数模式 不同,参数化路由通过 NavPathStack.pushPath 的 param 参数传递数据,目标页面在 NavDestinat…

2026/7/22 23:14:08阅读更多 →
深入解析qsort与冒泡排序

深入解析qsort与冒泡排序

目录 一,qsort函数 二,模仿qsort函数,利用冒泡排序排序任意类型的数据 三,sizeof和strlen对比 四,指针例题 1,指针-整数 2,指针-指针 3,指针复杂计算案例 一,qsort…

2026/7/22 23:14:08阅读更多 →
HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染

HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染

HarmonyOS应用开发实战:萌宠日记 - 自定义 TabBar 设计与图标渲染 前言 TabBar 是底部导航栏的 视觉呈现核心,它直接影响用户对应用的第一印象和操作体验。在 萌宠日记 中,我们使用 Builder 装饰器 自定义了 TabBar 的渲染方式,实…

2026/7/22 23:14:07阅读更多 →
研究生学术不端为何导师会被撤职、连带追责?

研究生学术不端为何导师会被撤职、连带追责?

一篇论文数据造假、引文编造,学生撤销学位,导师停招、降级甚至解聘,这类通报近年层出不穷。很多硕博生疑惑:犯错的明明是学生,为何惩罚会直接落到导师头上,甚至付出职业生涯代价?不少同学抱有侥…

2026/7/23 0:04:29阅读更多 →
非升即走扎心真相:大部分青椒三年没成果直接走人

非升即走扎心真相:大部分青椒三年没成果直接走人

现在从头部双一流到地方普通本科,非升即走已经是高校通用的考核规则。绝大多数院校都划死了硬性红线:聘期之内必须拿到国自然青年项目、产出要求数量的高水平论文,三年期限到了没达标,不续聘、直接解约走人。不少青年青椒白天排满…

2026/7/23 0:04:29阅读更多 →
AI课程论文怎么写不撞车?2026年实测:一晚上搞定3000字,查重AIGC双达标

AI课程论文怎么写不撞车?2026年实测:一晚上搞定3000字,查重AIGC双达标

【一句话答案】课程论文用AI写最怕"全班撞车AI率超标",毕业之家AI(www.biye.com)的ai生成课程论文功能按个性化选题定向生成、内置双检优化,实测3000字课论一晚上完成,查重率和AIGC率双双低于学校红线。一、…

2026/7/23 0:04:29阅读更多 →
[Android] 可视化音乐制作 -短视频超火的音乐视频制作工具

[Android] 可视化音乐制作 -短视频超火的音乐视频制作工具

[Android] 可视化音乐制作 -短视频超火的音乐视频制作工具 链接:https://pan.xunlei.com/s/VOy7xOpSlVN0N8AWBUpn13U6A1?pwdcss3# 一键生DIY律动音频特效,多种炫酷波形样式选择,搭配背景音乐快速,作简单,短视频创…

2026/7/23 0:04:29阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:02:29阅读更多 →
2026年下半年量化学习,不同基础要查不同缺口

2026年下半年量化学习,不同基础要查不同缺口

从手工交易规则转向量化表达时,并不存在一条对所有人都同样顺畅的路径。不同基础的人,看似面对同一个目标,实际卡点可能完全不同。AI 的作用也应随之调整,帮助读者检查自己最容易忽略的部分。规则要先变得可检查如果读者更习惯用经…

2026/7/23 0:02:29阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →