HarmonyOS 应用开发《掌上英语》第76篇:LazyVWaterFlowLayout 瀑布流:错题本与收藏夹的高效展示方案
LazyVWaterFlowLayout 瀑布流错题本与收藏夹的高效展示方案一、瀑布流 vs Grid何时选择谁在 HarmonyOS 5.0 中列表和网格布局主要依靠List和Grid两个容器组件。它们适用于内容高度一致的场景——比如我们的CourseHomePage单词卡片列表每个卡片高度相同用 Grid 整齐排列非常合适。但在一些场景中内容的高度天然不统一。例如MyWrongPage错题本有的错题是单词拼写只显示单词和音标内容很短有的错题是阅读理解包含题目原文、选项、用户的错误答案和正确答案内容很长。如果使用 Grid 布局所有 item 的高度必须对齐到最长的那一个导致短内容周围出现大量空白视觉上不均匀。HarmonyOS 6.0 新增的LazyVWaterFlowLayout懒加载瀑布流布局正是为这种场景设计的。与 Grid 不同瀑布流允许每个 item 独立确定高度按列依次排列短的 item 后面紧跟下一个 item形成水流般的紧凑布局。对比维度Grid 网格布局LazyVWaterFlowLayout 瀑布流内容高度要求统一允许不同布局密度有空白间隙紧凑排列适用场景单词卡片、图标入口错题本、收藏夹、笔记滚动性能优秀优秀懒加载item 复用支持支持二、LazyVWaterFlowLayout API 与使用限制LazyVWaterFlowLayout的基本使用方式如下LazyVWaterFlowLayout({ dataSource: this.wrongQuestionDataSource,columns:2,columnsGap:12,rowsGap:12,itemWidth:auto,itemHeight:auto,layoutWeight:1, }) {// item 渲染}关键参数说明dataSource数据源需要实现IDataSource接口支持懒加载。columns列数可以是固定值也可以根据 ContainerReader 动态调整。columnsGap / rowsGap列间距和行间距。itemWidth / itemHeight设置为 auto 时由内容决定尺寸。使用限制方面需要注意以下几点必须嵌套在可滚动容器内LazyVWaterFlowLayout本身不能独立滚动需要放置在Scroll组件内部。不支持跨列合并与 CSS 瀑布流不同不支持一个 item 跨多列。item 高度必须在渲染时确定不支持异步加载内容后动态改变高度但可以用占位符预先占位。数据源增删时整体刷新与LazyForEach的增量更新不同瀑布流数据源目前只支持全量刷新。三、按需加载与 item 复用性能优势LazyVWaterFlowLayout的命名前缀 Lazy 已经揭示了它的核心设计理念——懒加载。它只渲染当前可见区域内的 item以及上下各预加载若干 item预加载数量可通过cachedCount参数配置。当用户滚动时离开可见区域的 item 会被回收进入可见区域的新 item 会被创建。在复用方面LazyVWaterFlowLayout支持Reusable装饰器复用机制与 List/Grid 一致。结合文章 79 会详细介绍的ReusableV2全局复用池瀑布流中的卡片组件可以跨列表复用进一步减少创建开销。对于 500 词的错题本场景假设用户错了 150 题在 Grid 布局中需要一次性创建 150 个 item 对象即使只有 10 个在屏幕上。而在瀑布流中只需要创建约 15-20 个 item屏幕可见 预加载内存占用减少 80% 以上。四、MyWrongPage 错题展示改造MyWrongPage是错题本页面包含MyWrongItem组件展示用户的错题列表。现有的实现使用List组件垂直排列每个错题占据一个完整的行宽。在宽屏设备上这种布局效率很低——左右两侧大量空白而每个错题内容长度又不同。使用LazyVWaterFlowLayout改造后错题卡片以瀑布流排列LocalwaterFlowColumns:number2;build() {Column() {TopBar({title:错题本});ContainerReader({onContainerChange:(width:number) {this.waterFlowColumns width 500?3:2; }}) {Scroll() {LazyVWaterFlowLayout({dataSource:this.wrongDataSource,columns:this.waterFlowColumns,columnsGap:12,rowsGap:12, }) {// 复用已有的 MyWrongItem 组件} } .scrollable(ScrollDirection.Vertical); } .layoutWeight(1); } .width(100%) .height(100%); }每个错题卡片的内容高度由其自身内容决定一个只有 2 行文本的简单错题占用很小的空间而包含题目原文、选项分析的复杂错题占用更多空间。瀑布流将这些不同高度的卡片紧凑排列在相同屏幕空间内展示更多内容。在改造时需要注意MyWrongItem组件本身不需要修改——它自带的高度自适应特性通过Column包裹内容天然适合瀑布流。只需要将外部容器从List改为Scroll LazyVWaterFlowLayout即可。五、MyCollectionPage 收藏展示的混合布局MyCollectionPage收藏页面展示用户收藏的单词和笔记。与错题本类似收藏内容的高度也不统一——有的收藏只是一个单词短内容有的收藏包含单词 用户笔记 标签长内容。更特别的是收藏页面可以包含两种类型的 item单词卡片和笔记卡片。瀑布流天然支持不同类型 item 混合排列因为每个 item 独立渲染LazyVWaterFlowLayout({dataSource:this.collectionDataSource,columns:2,columnsGap:12,rowsGap:12,}){// 类型1单词卡片MyCollectionItem({item: collectionItem});// 类型2笔记卡片高度通常比单词卡片大NoteCard({note: collectionItem.note});}混合布局中不同高度和不同类型的卡片交错排列形成丰富的视觉节奏。短的单词卡片旁边可能是一张长的笔记卡片视觉上错落有致比整齐划一的 Grid 布局更有浏览的趣味性。六、实践建议高度不一致时用瀑布流在我们的英语学习 App 中需要根据内容特征选择布局方式适用瀑布流的场景错题本MyWrongPage错误类型多样内容长度差异大。收藏夹MyCollectionPage单词 笔记混合高度不一致。首页猜你喜欢推荐区每个推荐单词的描述长度不同。保持 Grid 的场景单词卡片列表CourseHomePage的卡片切换模式每张卡片高度一致。功能入口图标MainPage的 5 个功能入口高度完全一致。分类筛选 Tab固定高度无需瀑布流。选择标准很简单如果列表中的 item 高度差异超过 2 倍优先考虑瀑布流如果所有 item 高度基本相同使用 Grid。七、总结LazyVWaterFlowLayout瀑布流为内容高度不统一的列表场景提供了高效的布局方案。在MyWrongPage和MyCollectionPage中瀑布流不仅减少了空白空间、增加了信息密度还因为懒加载特性降低了内存占用。结合 ContainerReader 实现列数自适应以及 Reusable 复用机制瀑布流在大规模内容列表场景中兼具美观和性能优势。

相关新闻

HarmonyOS 应用开发《掌上英语》第75篇:ContainerReader 容器断点:告别全局 BreakpointModel,实现组件级自适应布局

HarmonyOS 应用开发《掌上英语》第75篇:ContainerReader 容器断点:告别全局 BreakpointModel,实现组件级自适应布局

ContainerReader 容器断点:告别全局 BreakpointModel,实现组件级自适应布局一、为什么需要容器断点 在 HarmonyOS 5.0 时代,实现多设备适配主要依赖全局断点方案——通过 BreakpointModel 监听窗口尺寸变化,将设备分为 sm/md/lg 三…

2026/8/1 5:31:51 阅读更多 →
分支限界法精解:高效求解最小权顶点覆盖问题

分支限界法精解:高效求解最小权顶点覆盖问题

1. 问题引入:从一道经典面试题说起最近在帮团队面试算法工程师时,我总会抛出一个问题:“给你一个无向图,每个顶点都有一个正权重,如何找到一个顶点集合,使得图中的每条边至少有一个端点在这个集合里&#x…

2026/8/1 5:31:51 阅读更多 →
深入解析CAN接口:从差分信号到多主仲裁的嵌入式通信实战

深入解析CAN接口:从差分信号到多主仲裁的嵌入式通信实战

1. 项目概述:从“车内局域网”到工业神经如果你拆开过一辆现代汽车的仪表台,或者观察过一台自动化产线的控制柜,里面密密麻麻的线束可能会让你头皮发麻。但正是这些线束,构成了设备内部各个“器官”之间高速、可靠的通信网络。而C…

2026/8/1 5:30:51 阅读更多 →

最新新闻

Netty高性能网络编程实战:从核心原理到生产环境避坑指南

Netty高性能网络编程实战:从核心原理到生产环境避坑指南

1. 从“Hello World”到百万连接:为什么Netty值得你投入时间如果你是一名Java后端开发者,或者对高性能网络编程感兴趣,那么“Netty”这个名字你一定不陌生。它常常和“高性能”、“异步”、“事件驱动”、“网络框架”这些词绑定在一起&#…

2026/8/1 6:11:03 阅读更多 →
LinkedHashMap与HashMap深度对比:从原理到LRU缓存实战

LinkedHashMap与HashMap深度对比:从原理到LRU缓存实战

1. 项目概述:为什么我们需要LinkedHashMap?如果你写过Java,HashMap绝对是绕不开的一个老朋友。它快,它简单,它用键值对帮你解决了无数数据存储和查找的问题。但不知道你有没有遇到过这样的场景:你从数据库里…

2026/8/1 6:11:03 阅读更多 →
科研绘图工具选择要点与实用指南

科研绘图工具选择要点与实用指南

“导师说我的图表不规范,重新画!”这是许多研究生在论文盲审前最怕听到的一句话。图表是学术论文的面子,更是表达科学发现的核心语言。但面对五花八门的科研绘图工具,很多人却陷入选择困难:数据图用Excel总觉得不够专业…

2026/8/1 6:11:03 阅读更多 →
企业网络交换核心技术解析:VLAN、STP、DHCP与BFD实战指南

企业网络交换核心技术解析:VLAN、STP、DHCP与BFD实战指南

1. 项目概述:从HCIP认证看企业网络交换核心 最近身边不少朋友在备考华为的HCIP认证,尤其是数通方向,交换部分的内容总是绕不开的重点和难点。很多人一看到VLAN、DHCP、BFD这些名词就头疼,觉得概念抽象,配置命令又繁杂。…

2026/8/1 6:11:03 阅读更多 →
生物信息学实战:从GO号到功能描述的精准查询与批量处理指南

生物信息学实战:从GO号到功能描述的精准查询与批量处理指南

1. 项目概述:从GO号到生物学描述的精准定位在生物信息学的日常分析中,Gene Ontology(基因本体论,简称GO)是我们解读高通量测序数据(如RNA-seq、蛋白质组学)结果时,绕不开的核心工具。…

2026/8/1 6:11:03 阅读更多 →
从Web渗透到内网提权:一次完整渗透测试实战全流程解析

从Web渗透到内网提权:一次完整渗透测试实战全流程解析

1. 项目概述:一次完整的渗透测试实战复盘最近在BugKu平台上复现了一个综合性的渗透测试靶场,从外部信息收集到最终的内网提权,整个过程涉及了Web渗透、权限维持、横向移动等多个阶段。这不仅仅是一次CTF解题,更是一个贴近真实渗透…

2026/8/1 6:10:03 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →