HarmonyOS开发实战:小分享-最近使用横向列表——三栏均分布局
前言最近使用列表是首页常见的功能模块用于展示用户最近操作过的内容方便快速重复访问。本篇以小分享 App 的 HomePage 最近使用区为例讲解三栏均分布局、文字省略、SpaceBetween分散对齐等核心技巧。详细 API 可参考 HarmonyOS Row 官方文档。一、最近使用完整代码1.1 数据定义private recentItems: ArrayRecentItem [ { title: 生活的美好, image: ️ }, { title: 山川湖海, image: }, { title: 天地有爱, image: } ];1.2 接口定义export interface RecentItem { title: string; // 标题 image: string; // 图片 Emoji }1.3 渲染代码Column({ space: 12 }) { Row() { Text(最近使用) .fontSize(16) .fontWeight(FontWeight.Bold) .fontColor(#1A1A1A) .layoutWeight(1) Text(›) .fontSize(18) .fontColor(#CCCCCC) } .width(100%) .padding({ left: 16, right: 16 }) Row({ space: 12 }) { ForEach(this.recentItems, (item: RecentItem, index: number) { Column() { Column() { Text(item.image) .fontSize(40) } .width(100%) .height(120) .backgroundColor(#F0F0F0) .borderRadius(12) .justifyContent(FlexAlign.Center) .alignItems(HorizontalAlign.Center) Text(item.title) .fontSize(12) .fontColor(#666666) .margin({ top: 8 }) .maxLines(1) .textOverflow({ overflow: TextOverflow.Ellipsis }) } .width(30%) .alignItems(HorizontalAlign.Center) }, (item: RecentItem, index: number) ${item.title}) } .width(100%) .padding({ left: 16, right: 16 }) .justifyContent(FlexAlign.SpaceBetween) }二、三栏均分布局2.1 宽度分配每栏宽度 30%三栏合计 90%剩余 10% 用于 Row 的space: 12Row 总宽 100% ├─ Column.width(30%) → 栏 1 │ space: 12 ├─ Column.width(30%) → 栏 2 │ space: 12 └─ Column.width(30%) → 栏 32.2 宽度分配方案对比方案总宽度间距适用场景30% × 390%10% 空间三栏均分33% × 399%1% 空间紧凑三栏50% × 2100%0 空间两栏均分25% × 4100%0 空间四栏均分2.3 SpaceBetween 分散对齐justifyContent(FlexAlign.SpaceBetween)让三栏在 Row 内均匀分布Row({ space: 12 }) { // 三栏内容 } .justifyContent(FlexAlign.SpaceBetween)三、文字省略处理3.1 完整代码Text(item.title) .fontSize(12) .fontColor(#666666) .margin({ top: 8 }) .maxLines(1) // 最多 1 行 .textOverflow({ overflow: TextOverflow.Ellipsis }) // 溢出省略号3.2 文字溢出处理方案方案代码效果省略号TextOverflow.Ellipsis文字溢出显示…裁剪TextOverflow.Clip直接裁剪多余文字不处理不设置可能会导致布局溢出3.3 多行省略Text(item.content) .maxLines(2) // 最多 2 行 .textOverflow({ overflow: TextOverflow.Ellipsis })四、标题行设计4.1 完整代码Row() { Text(最近使用) .fontSize(16) .fontWeight(FontWeight.Bold) .fontColor(#1A1A1A) .layoutWeight(1) Text(›) .fontSize(18) .fontColor(#CCCCCC) } .width(100%) .padding({ left: 16, right: 16 })4.2 标题行布局layoutWeight(1)让标题文字撑开›箭头符号固定在右侧Row 总宽 100% ├─ Text(最近使用) → layoutWeight(1) 撑开 └─ Text(›) → 右侧固定4.3 箭头符号设计›箭头符号Unicode U203A表示「更多」入口后期可扩展为点击跳转到详情页。五、图片占位区设计5.1 完整代码Column() { Text(item.image) .fontSize(40) } .width(100%) .height(120) .backgroundColor(#F0F0F0) .borderRadius(12) .justifyContent(FlexAlign.Center) .alignItems(HorizontalAlign.Center)5.2 设计要点设计要点如下尺寸100% × 120vp宽高比约 3:4背景色#F0F0F0浅灰作为占位色圆角12vp与卡片风格一致居中justifyContent CenteralignItems Center六、完整卡片布局6.1 卡片结构Column (30% 宽度) ├─ Column (图片占位区 100% × 120) │ └─ Text(Emoji) 40px └─ Text(标题) 12px 灰色6.2 间距控制间距值作用标题行 space12标题行与列表间距Row space12三栏之间间距图片与标题 margin8图片与文字间距6.3 交互反馈未来可添加点击跳转Column() .onClick(() { router.pushUrl({ url: pages/PreviewPage, params: { title: item.title } }) })七、扩展思考7.1 动态数据当前数据是硬编码的后续可从本地存储读取State recentItems: ArrayRecentItem []; aboutToAppear(): void { this.recentItems this.getRecentItems(); } private getRecentItems(): ArrayRecentItem { // 从 AppStorage 或 Preferences 读取 return JSON.parse(AppStorage.get(recent_items) || []); }7.2 横向滚动如果最近使用项超过 3 个可以改为横向 ScrollScroll() { Row({ space: 12 }) { ForEach(this.recentItems, (item, index) { // 每项 width(120) 固定宽度 }, (item) item.title) } } .scrollable(ScrollDirection.Horizontal)7.3 空状态处理当没有最近使用记录时显示空状态提示if (this.recentItems.length 0) { Text(暂无最近使用记录) .fontSize(14) .fontColor(#999999) .padding({ top: 40 }) }八、本篇核心知识点8.1 三栏布局核心要点三栏布局核心要点总结如下width(30%)每栏宽度justifyContent(SpaceBetween)分散对齐Row({ space: 12 })控制间距三栏合计 90%剩余用于间距8.2 文字省略处理文字省略处理要点总结如下maxLines(1)限制行数textOverflow({ overflow: TextOverflow.Ellipsis })省略号8.3 实战开发要点实战开发中需要重点关注以下几个要点百分比宽度确保响应式文字溢出必须处理避免布局错乱标题行留「更多」入口后续可扩展为横向滚动总结本文详细讲解了最近使用横向列表的三栏均分布局、文字省略处理、标题行设计、图片占位区等核心技巧。下一篇我们将看 BottomTabBar 自定义底部导航栏组件抽取。附录完整实现细节1. 核心 API 参考API作用说明本文涉及的核心 API功能实现参见华为官方文档2. 完整代码示例// 核心功能代码 // 详见正文中的完整实现3. 常见问题排查问题原因解决方案编译错误import 路径错误检查路径和 API 版本运行时异常参数不合法使用 try/catch 捕获性能问题主线程耗时操作使用异步 API4. 最佳实践错误处理完善使用 try/catch 包裹资源及时释放避免内存泄漏异步操作使用 async/await权限配置完整按需申请5. 完整代码文件索引文件路径说明本文涉及的代码文件见正文6. 实现要点总结核心实现要点API 的正确使用方法和参数说明完整的代码实现流程常见问题的排查方案性能优化和安全建议7. 总结本文详细讲解了小分享 App 中对应功能的完整实现。通过本文的学习读者可以掌握 HarmonyOS 开发的核心 API 使用方法和最佳实践。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力

相关新闻

制造业订单处理自动化:RPA与AI融合实践

制造业订单处理自动化:RPA与AI融合实践

1. 项目背景与核心挑战去年接手了一个制造业客户的订单处理流程自动化改造项目,客户每天需要处理超过2000份来自不同渠道的采购订单。传统人工操作模式下,平均每单处理耗时8分钟,且错误率高达3%。更棘手的是,这些订单涉及ERP、CRM…

2026/7/24 7:21:26 阅读更多 →
AI模型随机数生成偏好:套壳API检测与行为指纹技术解析

AI模型随机数生成偏好:套壳API检测与行为指纹技术解析

这次我们来看一个很有意思的研究发现:布拉格经济大学的研究团队发现,AI模型在生成随机数时存在特定的"偏好",这种偏好可以作为一种"行为指纹"来检测套壳API。简单来说,很多声称自研的AI服务可能只是对现有大模…

2026/7/24 7:21:26 阅读更多 →
LLM应用评估框架:从质量监控到生产部署的完整指南

LLM应用评估框架:从质量监控到生产部署的完整指南

最近在 Hacker News 上看到一个很有意思的讨论:"Ask HN: If youre running LLM bots on HN, can you at least report results?" 这个话题之所以引发关注,是因为越来越多的人开始用大语言模型(LLM)自动生成内容、回答问…

2026/7/24 7:21:26 阅读更多 →

最新新闻

深度学习复试备考指南:核心要点与实战策略

深度学习复试备考指南:核心要点与实战策略

1. 深度学习复试备考指南:核心要点与实战策略作为经历过多次研究生复试的过来人,我深知深度学习方向的复试准备需要一套系统化的方法论。不同于初试的笔试考核,复试更注重考察学生对深度学习的理解深度、实践能力和思维逻辑。这份总结将从知识…

2026/7/24 7:36:31 阅读更多 →
深入解析TI UCD90xxx PMBus制造商特定命令:故障、复位与看门狗实战

深入解析TI UCD90xxx PMBus制造商特定命令:故障、复位与看门狗实战

1. 项目概述与PMBus制造商特定命令的价值在数字电源管理的世界里,PMBus协议就像一套标准化的“交通规则”,它规定了主机和电源转换器之间如何对话,比如读取电压、设置电流限值或者上报温度。这套标准命令集让不同厂商的电源模块能够被统一管理…

2026/7/24 7:36:31 阅读更多 →
AI Agent多任务协同系统设计与实战经验分享

AI Agent多任务协同系统设计与实战经验分享

1. 项目背景与核心价值最近在准备AI领域的技术面试时,我发现很多面试官特别关注候选人对AI Agent多任务协同能力的理解。于是花了三周时间,从零构建了一个完整的点餐-支付-售后业务场景的AI Agent协同系统。这个项目不仅帮我拿下了多个offer,…

2026/7/24 7:36:31 阅读更多 →
Unity C#项目热更新实战:ILRuntime集成指南与避坑

Unity C#项目热更新实战:ILRuntime集成指南与避坑

1. 项目概述:为什么C#项目需要热更新?在游戏开发或者一些需要快速迭代的客户端应用中,我们经常会遇到一个头疼的问题:线上发现了一个紧急Bug,或者想上线一个节日活动,但用户不重启应用就无法获取最新的逻辑…

2026/7/24 7:36:31 阅读更多 →
阿里Qwen3-Max-Thinking:万亿参数MoE架构与自适应工具调用解析

阿里Qwen3-Max-Thinking:万亿参数MoE架构与自适应工具调用解析

1. 阿里Qwen3-Max-Thinking的技术突破与行业意义北京时间2026年1月26日晚间,阿里云正式发布了千问系列旗舰推理模型Qwen3-Max-Thinking。这款总参数规模超万亿的大模型,标志着中国AI企业在全球顶级AI竞赛中迈出了关键一步。作为千问系列的第三代旗舰产品…

2026/7/24 7:36:31 阅读更多 →
Megatron技术演进与混合并行架构解析

Megatron技术演进与混合并行架构解析

1. Megatron技术演进全景图2019年诞生的Megatron项目最初只是NVIDIA内部的一个研究实验,如今已成长为支撑全球大模型训练的核心基础设施。这个GPU优化框架的十年发展史,本质上是一部AI算力需求与硬件性能赛跑的编年史。从最初的单机多卡训练到支持万卡级…

2026/7/24 7:35:31 阅读更多 →

日新闻

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

月新闻