HarmonyOS开发实战:小分享-最近使用横向列表——三栏均分布局

发布时间:2026/7/24 7:21:27

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融合实践

2026/7/24 7:21:27

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

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

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

2026/7/24 7:21:27

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

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

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

2026/7/24 7:21:27

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

Windows Search服务高CPU占用问题分析与优化方案

Windows Search服务高CPU占用问题分析与优化方案

2026/7/24 8:01:28

1. 问题现象与根源分析最近在给客户排查服务器性能问题时,发现一个有趣的现象:某台Windows Server 2019的CPU使用率长期保持在90%以上,但实际业务负载并不高。通过任务管理器深入排查,发现罪魁祸首竟是"Windows Search"…

大语言模型智能体的核心架构与应用实践

大语言模型智能体的核心架构与应用实践

2026/7/24 8:01:28

1. 大语言模型智能体的本质与演进大语言模型(LLM)正在经历从"文本生成器"到"自主智能体"的范式转变。传统LLM如ChatGPT本质上是静态的知识库,通过概率预测生成连贯文本。而LLM-based Agents则引入了动态决策能力&#xf…

LangChain Output Parser:LLM输出结构化处理技术详解

LangChain Output Parser:LLM输出结构化处理技术详解

2026/7/24 8:01:28

1. LangChain Output Parser深度解析在构建基于大语言模型(LLM)的应用时,我们经常需要将模型输出的非结构化文本转换为程序可处理的结构化数据。这正是LangChain的Output Parser模块要解决的核心问题。作为LangChain表达式语言(LCEL)的基础构建块,Output…

AI设计工具提升文创效率:秦岳AI实战解析

AI设计工具提升文创效率:秦岳AI实战解析

2026/7/24 8:01:28

1. 项目概述作为一名从事文创设计行业8年的老手,我最近发现了一个能让设计效率提升10倍以上的神器——秦岳AI工具。这个工具彻底改变了传统帆布包印花设计的流程,让零基础的新手也能在3天内完成专业级的设计作品。上周我刚用这套方法帮一个大学生客户完成…

AI技术落地实战:从实验室到产线的五大经验

AI技术落地实战:从实验室到产线的五大经验

2026/7/24 8:01:28

1. AI技术落地的现状与挑战 去年全球AI项目失败率高达85%,这个数字让不少从业者夜不能寐。作为经历过三次AI项目从零到一落地的老兵,我深刻理解从实验室到产线这段"死亡之谷"的凶险。上周参加完某头部企业的AI落地发布会后,终于看到…

Fluidstack分布式算力平台:百GW部署与智能调度技术解析

Fluidstack分布式算力平台:百GW部署与智能调度技术解析

2026/7/24 7:51:28

在当今数字化浪潮中,算力作为核心基础设施的重要性日益凸显。近期,分布式计算平台 Fluidstack 宣布获得 8.3 亿美元巨额融资,计划快速部署百 GW 级别的算力资源。这一动向不仅反映了资本市场对算力赛道的高度认可,更预示着未来算力…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/24 4:17:29

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/23 4:40:05

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

2026/7/24 0:01:07

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

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

2026/7/24 0:01:07

srcampy /libsrcampy 名称释义先明确结论: 官方文档没有公布标准化英文全称,是地平线内部项目缩写;行业公认拆解如下:srcampy Source Amplifier Python bindingsrc Source(图像源:MIPI Sensor、视频源&am…

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

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

2026/7/24 0:01:07

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