HarmonyOS应用开发实战:萌宠日记 - 记录列表与状态标签
HarmonyOS应用开发实战萌宠日记 - 记录列表与状态标签前言记录列表是健康记录页中展示历史数据的核心组件。在萌宠日记的 HealthRecordPage 中记录列表以日期、体重值、状态标签三列布局展示每次的体重记录。状态标签使用绿色徽章标识“正常“状态让用户一目了然地掌握健康概况。本文将从萌宠日记的记录列表实现出发深入解析列表布局、状态标签设计、Divider 分割线以及数据驱动的列表渲染。一、记录列表整体设计1.1 数据结构// HealthRecordPage.ets — 体重记录数据结构 interface WeightRecord { date: string // 记录日期 weight: string // 体重值 status: string // 状态文字 statusColor: string // 状态颜色 } private weightRecords: WeightRecord[] [ { date: 2024-05-05, weight: 4.5 kg, status: 正常, statusColor: #4CAF50 }, { date: 2024-04-20, weight: 4.3 kg, status: 正常, statusColor: #4CAF50 }, { date: 2024-03-15, weight: 4.1 kg, status: 正常, statusColor: #4CAF50 } ]1.2 完整渲染// 记录列表 Column({ space: 12 }) { // 标题行 Row() { Text(记录列表) .fontSize(16) .fontWeight(FontWeight.Bold) .fontColor(#333333) Blank() Button( 记录) .fontSize(13) .fontColor(#F5A623) .backgroundColor(#FFF3E0) .borderRadius(16) .padding({ left: 12, right: 12, top: 4, bottom: 4 }) } .width(100%) // 列表项 ForEach(this.weightRecords, (record: WeightRecord) { Row() { Text(record.date) .fontSize(14) .fontColor(#666666) .width(100) Text(record.weight) .fontSize(14) .fontColor(#333333) .layoutWeight(1) Text(record.status) .fontSize(12) .fontColor(record.statusColor) .backgroundColor(#E8F5E9) .padding({ left: 8, right: 8, top: 2, bottom: 2 }) .borderRadius(8) } .width(100%) .padding({ top: 12, bottom: 12 }) // 分隔线 if (this.weightRecords.indexOf(record) this.weightRecords.length - 1) { Divider().color(#F0EBE3) } }) } .width(100%) .backgroundColor(#FFFFFF) .borderRadius(12) .padding({ left: 16, right: 16, top: 12, bottom: 8 })提示记录列表使用三列布局日期、体重、状态标签通过width(100)固定日期列宽度layoutWeight(1)让体重列撑满剩余空间状态标签在右侧固定显示。这是 ArkUI 中实现列表项等分布局的典型模式。二、列表项布局2.1 三列布局┌─────────────────────────────────────┐ │ 2024-05-05 4.5 kg [正常] │ │ 2024-04-20 4.3 kg [正常] │ │ 2024-03-15 4.1 kg [正常] │ └─────────────────────────────────────┘2.2 列宽分配列内容宽度控制说明日期记录日期width(100)固定宽度日期格式统一体重体重值layoutWeight(1)弹性自动撑满状态状态标签自适应内容宽度标签 背景色三、状态标签设计3.1 标签样式Text(record.status) .fontSize(12) // 小字号 .fontColor(record.statusColor) // 动态颜色绿色 .backgroundColor(#E8F5E9) // 浅绿色背景 .padding({ left: 8, right: 8, top: 2, bottom: 2 }) // 内边距 .borderRadius(8) // 圆角3.2 状态颜色方案状态文字色背景色语义正常#4CAF50绿色#E8F5E9浅绿健康偏瘦#FF9800橙色#FFF3E0浅橙注意偏胖#F44336红色#FFEBEE浅红警告四、标题行设计4.1 标题 添加按钮Row() { Text(记录列表) .fontSize(16) .fontWeight(FontWeight.Bold) Blank() Button( 记录) .fontSize(13) .fontColor(#F5A623) .backgroundColor(#FFF3E0) .borderRadius(16) .padding({ left: 12, right: 12, top: 4, bottom: 4 }) }五、列表项间距5.1 垂直间距Row() { // 列表项内容 } .width(100%) .padding({ top: 12, bottom: 12 }) // 上下内边距 12vp5.2 列表容器间距Column({ space: 12 }) { // 标题行 // 列表项 } .padding({ left: 16, right: 16, top: 12, bottom: 8 })六、Divider 分隔线6.1 条件渲染// 最后一项不显示分隔线 if (this.weightRecords.indexOf(record) this.weightRecords.length - 1) { Divider().color(#F0EBE3) }七、数据驱动7.1 添加记录// 添加新的体重记录 addWeightRecord(date: string, weight: string, status: string): void { const newRecord: WeightRecord { date: date, weight: ${weight} kg, status: status, statusColor: this.getStatusColor(weight) } // 插入到列表头部 this.weightRecords [newRecord, ...this.weightRecords] } // 根据体重判断状态 getStatusColor(weight: number): string { if (weight 4.0 weight 5.0) return #4CAF50 // 正常 if (weight 4.0) return #FF9800 // 偏瘦 return #F44336 // 偏胖 }八、状态标签的扩展8.1 多种状态// 根据状态动态生成标签 function getStatusTag(status: string, statusColor: string): void { Text(status) .fontSize(12) .fontColor(statusColor) .backgroundColor(getStatusBgColor(statusColor)) .padding({ left: 8, right: 8, top: 2, bottom: 2 }) .borderRadius(8) } // 获取状态背景色 function getStatusBgColor(color: string): string { const bgMap: Recordstring, string { #4CAF50: #E8F5E9, // 绿色 → 浅绿 #FF9800: #FFF3E0, // 橙色 → 浅橙 #F44336: #FFEBEE, // 红色 → 浅红 } return bgMap[color] || #F5F5F5 }九、无障碍适配Row() { Text(record.date).fontSize(14) Text(record.weight).fontSize(14) Text(record.status).fontSize(12) } .accessibilityText(${record.date}体重${record.weight}状态${record.status})十、最佳实践10.1 记录列表设计原则有序列表 — 记录列表设计的 5 个原则三列清晰日期、数值、状态三列信息层级分明状态可视化使用颜色标签直观标识状态固定列宽日期列固定宽度保证对齐最后一项无分隔线保持列表底部整洁标题 操作按钮标题行包含添加按钮方便操作10.2 萌宠日记记录列表总结设计要素值说明列数3 列日期、体重、状态日期列宽100vp固定体重列layoutWeight(1)弹性状态标签文字 背景色圆角 8vp状态颜色动态绿/橙/红分隔线#F0EBE3最后一项不显示总结本文从萌宠日记的记录列表与状态标签实现出发深入解析了列表展示的完整方法数据模型WeightRecord 接口定义记录数据三列布局日期固定、体重弹性、状态自适应状态标签绿色背景 白色文字圆角徽章标题行记录列表标题 添加按钮列表间距上下 12vp 内边距Divider 分隔线条件渲染最后一项不显示数据驱动添加记录自动更新列表状态扩展多种状态的颜色方案下一篇我们将深入添加记录按钮设计解析健康记录页中添加按钮的样式与交互。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Row 组件https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-container-rowDivider 组件https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-dividerButton 组件https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-components-buttonForEach 使用https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-foreach颜色使用规范https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/color-usage列表性能优化https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/list-optimization无障碍开发https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/accessibility-kit交互反馈https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/interaction-feedback

相关新闻

CLion插件开发实战:自动检测C++项目GPL许可证污染

CLion插件开发实战:自动检测C++项目GPL许可证污染

1. 项目概述:为什么我们需要一个GPL污染检测插件?如果你是一名C程序员,尤其是在商业公司或对开源合规有严格要求的团队里工作,那么“GPL污染”这个词很可能让你心头一紧。它不是指代码里有病毒,而是指你的专有&#xf…

2026/7/22 9:07:10 阅读更多 →
HarmonyOS应用开发实战:萌宠日记 - 健康记录分类导航设计

HarmonyOS应用开发实战:萌宠日记 - 健康记录分类导航设计

HarmonyOS应用开发实战:萌宠日记 - 健康记录分类导航设计 前言 健康记录 是 萌宠日记 的核心功能模块之一,用于记录宠物的 体重、疫苗、驱虫、体检 等健康数据。在 HealthRecordPage 中,我们使用 分类导航 设计,通过 5 个图标分类…

2026/7/22 9:07:10 阅读更多 →
基于Unity 3D的智能交通仿真系统:从游戏引擎到交通实验室

基于Unity 3D的智能交通仿真系统:从游戏引擎到交通实验室

1. 项目概述:一个能“跑”起来的城市沙盘最近在GitHub上闲逛,发现了一个挺有意思的玩意儿,一个基于Unity 3D开发的智能交通系统开源项目。说实话,第一眼看到“智能交通系统”这词儿,我脑子里蹦出来的要么是那种动辄几百…

2026/7/22 9:07:10 阅读更多 →

最新新闻

【JAVA毕设源码分享】基于SpringBoot的公共交通路线应用系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的公共交通路线应用系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 18:23:30 阅读更多 →
Django毕设选题推荐:基于Python的校园人员流动疫情管控信息系统设计 高校疫情排查与重点人员预警系统【附源码、mysql、文档、调试+代码讲解+全bao等】

Django毕设选题推荐:基于Python的校园人员流动疫情管控信息系统设计 高校疫情排查与重点人员预警系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 18:23:30 阅读更多 →
Jitter 和相位噪声

Jitter 和相位噪声

近期学习PLL的时候,发现里面有诸多jitter类型,绕晕了,写个帖子记录一下学习过程。 目录 基本jitter和相噪概念 jitter 相位噪声 相位噪声和jitter之间的联系 三种常见的抖动类型及其特点 基本jitter和相噪概念 无噪声振荡器的输出是一…

2026/7/23 18:23:30 阅读更多 →
Django毕设选题推荐:贵州原生态特色产品线上推广交易平台设计 基于 Django 的本土特色农产品电商服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】

Django毕设选题推荐:贵州原生态特色产品线上推广交易平台设计 基于 Django 的本土特色农产品电商服务平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 18:23:30 阅读更多 →
AI视频编辑3.0:指数剪辑技术与行业变革

AI视频编辑3.0:指数剪辑技术与行业变革

1. 视频编辑技术演进与行业变革最近看到常垒资本投资的Vattention获得数百万美元融资的消息,让我不禁思考视频编辑技术正在经历怎样的范式转移。作为一个在影视行业摸爬滚打十年的从业者,我亲眼见证了从线性编辑到非线性编辑(NLE)的变革,而现…

2026/7/23 18:23:30 阅读更多 →
Springboot整合百度人脸识别功能实现注册和登录

Springboot整合百度人脸识别功能实现注册和登录

超详细多种人脸识别教程请参考CSDN中CodeDevMaster大佬的教程,链接如下:Java借助百度云人脸识别实现人脸注册、登录功能的完整示例_百度api 视频流人脸识别 java-CSDN博客 本文档的百度AI人脸识别主要用于人脸登录等功能类似于手机上的面容解锁&#xff…

2026/7/23 18:22:30 阅读更多 →

日新闻

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

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

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

2026/7/23 0:00:25 阅读更多 →
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:01:26 阅读更多 →
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:01:26 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

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

月新闻