底部工具栏设计:Row + layoutWeight 等分布局
前言底部工具栏是写日记页面的重要交互区域提供了图片、表情、标签、位置和更多操作的入口。“海风日记“的工具栏通过 Row layoutWeight 实现了 5 个图标的等分布局每个图标都使用 SymbolGlyph 文字标签的组合。本文将从源码出发深入讲解工具栏的布局实现、图标排列和交互设计。一、工具栏布局1.1 源码Row({ space: 24 }) { // 图片 Column({ space: 4 }) { SymbolGlyph($r(sys.symbol.camera)).fontSize(22).fontColor([COLOR_AMBER]) Text(图片).fontSize(9).fontColor(COLOR_TEXT_HINT) }.layoutWeight(1).alignItems(HorizontalAlign.Center) // 表情 Column({ space: 4 }) { SymbolGlyph($r(sys.symbol.face_smiling)).fontSize(22).fontColor([COLOR_AMBER]) Text(表情).fontSize(9).fontColor(COLOR_TEXT_HINT) }.layoutWeight(1).alignItems(HorizontalAlign.Center) // 标签 Column({ space: 4 }) { SymbolGlyph($r(sys.symbol.list_bullet)).fontSize(22).fontColor([COLOR_AMBER]) Text(标签).fontSize(9).fontColor(COLOR_TEXT_HINT) }.layoutWeight(1).alignItems(HorizontalAlign.Center) // 位置 Column({ space: 4 }) { SymbolGlyph($r(sys.symbol.map)).fontSize(22).fontColor([COLOR_AMBER]) Text(位置).fontSize(9).fontColor(COLOR_TEXT_HINT) }.layoutWeight(1).alignItems(HorizontalAlign.Center) // 更多 Column({ space: 4 }) { SymbolGlyph($r(sys.symbol.ellipsis_circle)).fontSize(22).fontColor([COLOR_AMBER]) Text(更多).fontSize(9).fontColor(COLOR_TEXT_HINT) }.layoutWeight(1).alignItems(HorizontalAlign.Center) } .width(100%).height(60) .padding({ left: PAGE_PADDING, right: PAGE_PADDING }) .backgroundColor(COLOR_CARD_BG) .border({ width: { top: 1 }, color: rgba(200,180,140,0.15) })二、layoutWeight 等分布局2.1 layoutWeight 的原理layoutWeight用于在 Row 或 Column 中按权重分配剩余空间Row() { Column().layoutWeight(1) // 每个占 1/5 宽度 Column().layoutWeight(1) Column().layoutWeight(1) Column().layoutWeight(1) Column().layoutWeight(1) }2.2 权重计算5 个图标每个layoutWeight(1)每个图标宽度 总宽度 / 5。三、编辑页工具栏编辑页 (EditDiaryPage) 的工具栏使用ForEach实现interface ToolbarItem { icon: Resource label: string } ForEach( [ { icon: $r(sys.symbol.camera), label: 图片 }, { icon: $r(sys.symbol.face_smiling), label: 表情 }, { icon: $r(sys.symbol.list_bullet), label: 标签 }, { icon: $r(sys.symbol.map), label: 位置 }, { icon: $r(sys.symbol.trash), label: 删除 }, ] as ToolbarItem[], (item: ToolbarItem) { Column({ space: 4 }) { SymbolGlyph(item.icon).fontSize(22) .fontColor([item.label 删除 ? #D06060 : COLOR_AMBER]) Text(item.label).fontSize(9).fontColor(COLOR_TEXT_HINT) }.layoutWeight(1).alignItems(HorizontalAlign.Center) } )四、工具栏样式属性值说明高度60vp工具栏高度背景COLOR_CARD_BG卡片背景色顶部边框1px 半透明分隔线图标大小22vpSymbolGlyph 尺寸文字大小9vp标签文字五、常见问题5.1 图标间距不均匀问题工具栏图标间距不均匀。原因同时使用了space和layoutWeight。解决方案使用layoutWeight时space设为 0 或去掉。总结本文通过“海风日记“的底部工具栏深入讲解了 Row layoutWeight 的等分布局layoutWeight 权重5 个图标等分宽度SymbolGlyph Text图标 文字标签ForEach 工具项编辑页的工具栏样式统一高度、背景、边框下一篇文章将深入讲解Scroll layoutWeight 实现自适应滚动敬请期待。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Row 组件文档layoutWeight 属性文档SymbolGlyph 文档海风日记项目源码[HarmonyOS 开发者官网](https://atomgit.com/openharmony/docs开源鸿蒙跨平台社区

相关新闻

【AI大模型微调】第 4 章 微调数据准备

【AI大模型微调】第 4 章 微调数据准备

第 4 章 微调数据准备 在微调大语言模型时,数据是决定模型性能与适用性的关键因素。模型表现,很大程度上取决于其训练数据的质量。根据数据的来源与可访问性,通常可分为两大类:公共数据源与私有数据源。 4.1 公共数据源 公共数…

2026/7/22 19:18:11 阅读更多 →
记录一次种牙:半年后的真实感受

记录一次种牙:半年后的真实感受

种完牙半年了,记录一下感受。种之前缺了一颗牙好几年,一直拖着。主要是怕疼、怕花钱、怕折腾。后来旁边的牙开始歪了,才下定决心。种之后最大的变化是吃饭方便了。以前缺牙的地方不敢嚼,现在两边都能正常用。恢复比想象中快&#…

2026/7/23 10:20:43 阅读更多 →
2026年洛阳新房装修:靠老客户转介绍活下来的装修公司,到底有多靠谱?

2026年洛阳新房装修:靠老客户转介绍活下来的装修公司,到底有多靠谱?

干了二十多年家装,经手过上千套房子,我见过太多业主满怀期待开工,最后却因踩坑而闹心收场。尤其在洛阳这样的二三线城市,装修市场鱼龙混杂——有的公司靠低价引流,后期增项不断;有的把工程层层转包&#xf…

2026/7/22 20:54:03 阅读更多 →

最新新闻

告别数字囤积:从网盘收藏到高效知识管理的实用指南

告别数字囤积:从网盘收藏到高效知识管理的实用指南

那天下午,团队 Slack 频道里突然冒出一张截图:一个命名为“摸鱼日练背”的文件夹,里面整整齐齐躺着十几个 PDF 文件,从《肩颈放松十二式》到《办公室五分钟拉伸指南》。发图的同事补了一句:“网盘里翻出来的&#xff0…

2026/7/24 8:58:57 阅读更多 →
苏州长期零申报企业如何降低税务预警风险?

苏州长期零申报企业如何降低税务预警风险?

没业务≠不用管,零申报的“安全期”比你想象的要短 很多老板觉得:公司暂时没业务,零申报就完了呗,反正不欠税。但真实情况是——长期零申报本身就是税务大数据重点监控的信号,一旦触发预警,发票被锁、信用降…

2026/7/24 8:58:57 阅读更多 →
AI记忆框架对比:Mem0、MemOS与TiMem架构解析

AI记忆框架对比:Mem0、MemOS与TiMem架构解析

1. 项目概述:AI记忆框架的架构之争 2026年的AI记忆框架领域正经历一场深刻的范式转变。三年前,当大语言模型还停留在"金鱼记忆"阶段时,谁能想到今天会出现Mem0、MemOS和TiMem这样各具特色的解决方案?作为一名从2020年就…

2026/7/24 8:57:57 阅读更多 →
基于兰姆波与深度学习的航空航天结构健康监测技术

基于兰姆波与深度学习的航空航天结构健康监测技术

1. 项目背景与核心价值 在航空航天领域,结构健康监测(SHM)就像给飞机装上了"智能体检系统"。传统检测需要停机拆解,而基于兰姆波的SHM技术能在飞行器服役期间持续"把脉",这种非接触式检测方法的效率比传统手段提升5-8倍。…

2026/7/24 8:57:57 阅读更多 →
AI时代提示词工程:从代码编写到需求描述的技能跃迁

AI时代提示词工程:从代码编写到需求描述的技能跃迁

1. 标题背后的行业焦虑与现实挑战 "别卷代码了,你的年薪百万,在AI眼里只值3段提示词"这个标题精准戳中了当前技术从业者的集体焦虑。作为在AI和编程领域深耕十年的从业者,我亲眼见证了这个行业从传统编码到智能生成的技术跃迁。这句…

2026/7/24 8:57:57 阅读更多 →
多智能体系统协作机制:从状态同步到冲突解决的技术实践

多智能体系统协作机制:从状态同步到冲突解决的技术实践

最近在技术社区中,关于多智能体协作系统的讨论越来越热。很多开发者发现,单纯让一个AI模型完成任务已经不够用了,真实项目往往需要多个智能体协同工作,就像一支技术团队需要不同角色的工程师配合一样。 但问题来了:当…

2026/7/24 8:57:57 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/23 17:49:47 阅读更多 →

月新闻