HarmonyOS应用开发实战:萌宠日记 - 保存按钮与底部操作栏
HarmonyOS应用开发实战萌宠日记 - 保存按钮与底部操作栏前言保存按钮是日记编辑器的最终操作入口用户完成所有输入后通过点击保存按钮将日记数据持久化。在萌宠日记的日记编辑器中底部操作栏包含社交分享按钮和保存按钮采用左右分布的布局将主要操作按钮放在右侧符合用户的操作习惯。本文将从萌宠日记的保存按钮与底部操作栏实现出发深入解析按钮设计、布局分布、保存逻辑、以及操作反馈的完整实现。一、底部操作栏整体设计1.1 布局结构┌─────────────────────────────────────┐ │ [ 保存 ] │ │ 社交分享 主题色按钮 │ └─────────────────────────────────────┘1.2 完整代码// WriteDiaryPage.ets — 底部操作栏 Row() { // 左侧社交分享 Row({ space: 16 }) { Text() .fontSize(20) Text() .fontSize(20) } Blank() // 右侧保存按钮 Button(保存) .fontSize(15) .fontColor(Color.White) .backgroundColor(#F5A623) .borderRadius(20) .padding({ left: 24, right: 24, top: 8, bottom: 8 }) .onClick(() { this.saveDiary() }) } .width(100%) .padding({ bottom: 20 })提示底部操作栏使用Row 布局左侧放置社交分享图标中间使用Blank()弹性占位右侧放置保存按钮。这种左右分布的布局方式将主要操作按钮保存放在右侧符合移动端用户的操作习惯。二、保存按钮设计2.1 按钮样式Button(保存) .fontSize(15) // 按钮文字大小 .fontColor(Color.White) // 白色文字 .backgroundColor(#F5A623) // 品牌橙色背景 .borderRadius(20) // 胶囊形圆角 .padding({ left: 24, right: 24, top: 8, bottom: 8 }) // 内边距 .onClick(() { this.saveDiary() })2.2 按钮样式参数参数值说明fontSize15fp适中字号fontColorColor.White白色文字高对比度backgroundColor#F5A623品牌橙色borderRadius20胶囊形圆角左右内边距24vp水平内边距充分上下内边距8vp垂直内边距适中三、社交分享图标3.1 图标设计Row({ space: 16 }) { Text() // 全球分享 .fontSize(20) Text() // 好友分享 .fontSize(20) }3.2 图标含义图标含义功能说明公开分享发布到社区或社交平台好友可见仅限好友查看四、保存逻辑4.1 数据收集// 保存日记 — 收集所有编辑数据 saveDiary(): void { const diaryData { title: this.title, // 日记标题 content: this.content, // 正文内容 mood: this.selectedMood, // 心情索引 moodLabel: this.moods[this.selectedMood].label, // 心情文字 location: this.location, // 地点 weather: this.weather, // 天气 date: this.date, // 日期 createdAt: new Date().toISOString(), // 创建时间 updatedAt: new Date().toISOString() // 更新时间 } // 执行保存 this.persistDiary(diaryData) }4.2 数据持久化// 持久化日记数据 persistDiary(diaryData: DiaryData): void { try { // 1. 保存到本地数据库或 Preferences // 2. 更新全局状态 // 3. 返回上一页 console.log(Diary saved:, diaryData.title) // 返回日记列表 this.diaryStack.pop() } catch (err) { console.error(Save failed:, JSON.stringify(err)) // 显示错误提示 } }五、保存状态反馈5.1 保存状态管理enum SaveState { IDLE, // 空闲 SAVING, // 保存中 SUCCESS, // 保存成功 ERROR // 保存失败 } State saveState: SaveState SaveState.IDLE // 根据状态显示不同 UI getSaveButtonText(): string { switch (this.saveState) { case SaveState.IDLE: return 保存 case SaveState.SAVING: return 保存中... case SaveState.SUCCESS: return 已保存 ✓ case SaveState.ERROR: return 保存失败重试 } }5.2 保存中状态// 保存中显示加载状态 Button(this.getSaveButtonText()) .fontSize(15) .fontColor(Color.White) .backgroundColor(this.saveState SaveState.ERROR ? #F44336 : #F5A623) .enabled(this.saveState ! SaveState.SAVING) // 保存中禁用 .onClick(() { if (this.saveState SaveState.ERROR) { this.saveDiary() // 失败时重试 } else { this.saveDiary() } })六、保存成功反馈6.1 Toast 提示// 保存成功后显示 Toast saveDiary(): void { this.saveState SaveState.SAVING // 模拟保存操作 setTimeout(() { this.saveState SaveState.SUCCESS // 显示成功提示 console.log(保存成功) // 延迟返回 setTimeout(() { this.diaryStack.pop() }, 500) }, 1000) }七、布局位置7.1 底部操作栏的位置// 底部操作栏在编辑区的最后 Scroll() { Column({ space: 20 }) { // 标题输入 // 分隔线 // 正文输入 // 照片附件 // 心情选择 // 地点与天气 // 保存按钮位于底部 this.SaveButton() } .padding({ left: 16, right: 16 }) } .layoutWeight(1)7.2 位置设计考量位置选项优点缺点编辑区底部跟随滚动始终在内容之后长内容时需要滚动到底部固定底部始终可见遮挡键盘和内容导航栏容易发现占用导航栏空间八、保存按钮的变体设计8.1 固定底部保存栏// 固定底部保存栏另一种方案 Column() { // 可滚动编辑区 Scroll() { // 编辑内容... } .layoutWeight(1) // 固定底部操作栏 Row() { Row({ space: 16 }) { Text().fontSize(20) Text().fontSize(20) } Blank() Button(保存) .fontSize(15).fontColor(Color.White) .backgroundColor(#F5A623) .borderRadius(20) .padding({ left: 24, right: 24, top: 8, bottom: 8 }) } .width(100%) .padding(16) .backgroundColor(#FFFFFF) .shadow({ radius: 4, color: #10000000, offsetY: -2 }) }九、无障碍适配Button(保存) .fontSize(15) .fontColor(Color.White) .backgroundColor(#F5A623) .borderRadius(20) .accessibilityText(保存日记) Text() .fontSize(20) .accessibilityText(分享到社交平台) Text() .fontSize(20) .accessibilityText(分享给好友)十、最佳实践10.1 保存按钮设计原则有序列表 — 保存按钮设计的 5 个原则位置明确保存按钮在编辑区底部用户完成编辑后自然找到视觉突出品牌橙色背景 白色文字与灰色标签区明显区分状态反馈保存中、成功、失败状态应有明确的视觉反馈防止重复保存中禁用按钮防止重复提交失败重试保存失败时提供重试机制10.2 萌宠日记保存按钮总结设计要素值说明按钮文字保存简洁明确背景色#F5A623品牌橙色文字色Color.White白色高对比圆角20胶囊形左右内边距24vp充分的内边距位置编辑区底部跟随内容保存状态IDLE/SAVING/SUCCESS/ERROR四种状态总结本文从萌宠日记的保存按钮与底部操作栏实现出发深入解析了按钮设计与保存逻辑的完整方法布局设计Row 左右分布左侧社交分享右侧保存按钮按钮样式品牌橙色 胶囊圆角 白色文字社交分享图标 公开分享 好友可见保存逻辑数据收集 → 持久化 → 返回保存状态IDLE/SAVING/SUCCESS/ERROR 四种状态成功反馈Toast 提示 自动返回固定底部方案另一种保存栏设计无障碍适配accessibilityText 描述下一篇我们将深入Divider 分割线在表单中的运用解析日记编辑器中 Divider 的布局与视觉分割作用。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Button 组件https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-buttonBlank 组件https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-blankRow 组件https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-container-row数据持久化https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/app-data-persistence用户首选项https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/data-persistence-by-preferences关系型数据库https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/data-persistence-by-rdb-store无障碍开发https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/accessibility-kit交互反馈https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/interaction-feedback

相关新闻

2026科技创新的国内EMBA中立择校测评

2026科技创新的国内EMBA中立择校测评

民营企业家、企业创始人选读EMBA,大多纠结三大问题:课程是否贴合科创转型、圈层是否匹配企业发展、资源能否助力出海与数字化升级。本文从全球办学排名、院校办学定位、课程体系、学员圈层、产业资源五大维度,对科技创新的国内EMBA主流项目做…

2026/7/24 6:46:56 阅读更多 →
计算机毕业设计之基于SpringBoot的摄影平台

计算机毕业设计之基于SpringBoot的摄影平台

随着人们生活水平的提升与数字技术的发展,摄影已从专业领域走入大众生活,无论是记录日常美好瞬间,还是追求艺术创作,对摄影的需求日益增长。然而,市场上缺乏一个集作品展示、服务交易、学习交流于一体的综合性平台&…

2026/7/24 7:34:18 阅读更多 →
macOS开发证书配置与Xcode项目上架全指南

macOS开发证书配置与Xcode项目上架全指南

1. macOS开发证书配置全流程解析 作为苹果生态开发者,证书配置是项目上架前的必经之路。我经历过无数次证书配置的"血泪史",今天就把这些经验系统梳理出来。macOS开发证书主要分为开发证书(Development)和发布证书(Distribution)两类&#xff…

2026/7/22 15:55:21 阅读更多 →

最新新闻

多模态AI Agent工程实践:架构设计与性能优化

多模态AI Agent工程实践:架构设计与性能优化

1. 多模态AI Agent的工程化实践三年前我第一次尝试让AI系统同时处理图像和文本时,遭遇了令人沮丧的失败——视觉模型输出的特征向量与语言模型的嵌入空间完全不兼容。这种割裂感促使我深入探索多模态融合的工程实现,最终形成了这套经过生产环境验证的Har…

2026/7/24 7:33:30 阅读更多 →
GraphRAG技术解析:知识图谱增强检索在金融领域的应用

GraphRAG技术解析:知识图谱增强检索在金融领域的应用

1. GraphRAG技术全景解析GraphRAG作为微软研究院推出的知识图谱增强检索系统,正在重塑企业级RAG应用的开发范式。我在金融问答机器人项目中深度应用这套框架后发现,其核心创新在于将传统向量检索升级为多跳推理网络。与普通RAG仅依赖语义相似度不同&…

2026/7/24 7:33:30 阅读更多 →
SFm系列PLC怎么选?5款型号参数对照与选型建议

SFm系列PLC怎么选?5款型号参数对照与选型建议

SFm系列PLC怎么选?5款型号参数对照与选型建议 简思SFm系列PLC主打24进24出,细分5款主推型号,覆盖从纯开关量控制到全功能模拟量采集加脉冲输入的不同需求。本文把这5款的硬件差异和适用场景梳理清楚,方便选型时对照。 全系列公共规…

2026/7/24 7:33:30 阅读更多 →
[C2000实战] 拒绝手撸寄存器:利用 SysConfig 快速配置DSP F2800137的EPWMXBAR功能及参数说明

[C2000实战] 拒绝手撸寄存器:利用 SysConfig 快速配置DSP F2800137的EPWMXBAR功能及参数说明

EPWMXBAR的Sysconfig配置参数详解:这里的TRIP代表DSP内部的硬件故障数据流总线,和具体的外设没有固定的绑定关系,这里的TRIP4可以给EPWM1 的 Digital Compare 进行触发,也可以是TRIP5给EPWM1进行触发保护。每条 TRIP 总线都可以接…

2026/7/24 7:33:30 阅读更多 →
BQ27410-G1阻抗跟踪电量计:从原理到实战的高精度电池管理方案

BQ27410-G1阻抗跟踪电量计:从原理到实战的高精度电池管理方案

1. 项目概述与核心价值在便携式电子设备的设计中,电池管理一直是个既基础又棘手的难题。你肯定遇到过这种情况:设备明明显示还有20%的电量,结果没几分钟就自动关机了;或者新设备续航很顶,用了一两年后,电量…

2026/7/24 7:33:30 阅读更多 →
瑞德克斯账户提醒够不够稳妥?

瑞德克斯账户提醒够不够稳妥?

瑞德克斯更适合从安全核验和使用秩序来理解,细节往往比宣传性结论更重要。围绕账户安全观察,平台把重要信息放在更容易确认的位置,减少了使用中的猜测。把问题拆开去看,平台在基础服务、说明完整度和提醒意识上的表现就更容易被感…

2026/7/24 7:32:30 阅读更多 →

日新闻

用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 阅读更多 →

月新闻