36.2 lv_list 列表控件的 API 接口解析与工程实践
在嵌入式 GUI 开发中,列表(list)是承载多条结构化信息的核心容器控件。LittlevGL(现为 LVGL)提供的lv_list并非简单的 UI 元素堆叠,而是一个具备滚动管理、项状态维护、事件分发与视觉反馈的复合型组件。其设计哲学强调“行为即状态”——列表项的选中、高亮、滚动位置等并非静态属性,而是由底层滚动容器(lv_obj_t *)与内部项对象(lv_obj_t *)协同驱动的动态过程。本节将基于 STM32 平台,结合正点原子开发板的实际工程约束,系统性地拆解lv_list的初始化流程、API 语义、常见陷阱及性能调优策略。
36.2.1 列表控件的本质:滚动容器与项对象的双层架构
理解lv_list的首要前提是厘清其内在结构。它并非一个单一对象,而是由两个逻辑层级构成:
- 顶层容器(List Container):即通过
lv_list_create()创建的lv_obj_t *对象。该对象本身不直接显示内容,其核心职责是: - 管理滚动区域(Scrolled Area)的尺寸与边界;
- 维护滚动条(Scrollbar)的可见性与交互逻辑;
- 提供项对象的统一父容器,承担坐标系与样式继承;
实现
lv_obj