LVGL 控件之列表(lv_list)


一、概述

List(列表) 基本上是一个垂直布局的矩形,按钮指向该矩形并且可以添加文本。

列表部件由两个部分组成:

  • LV_PART_MAIN 使用所有典型背景属性的列表的主要部分
  • LV_PART_SCROLLBAR 滚动条。

二、列表

1、添加列表按钮

在默认的情况下,列表部件被创建出来后,只有一个矩形背景框,并没有任何的文本和按钮,用户需要自行往列表里面添加按钮,添加按钮的相关函数为 lv_list_add_btn

lv_obj_t *list = lv_list_create(lv_scr_act());  /* 创建列表 */
lv_obj_set_width(list, 200);                    /* 设置列表宽度 */
lv_obj_set_height(list, 150);                   /* 设置列表高度 */
lv_obj_center(list);

lv_obj_t *btn;
btn = lv_list_add_btn(list, NULL, "lst1");  /* 添加按钮 */
btn = lv_list_add_btn(list, NULL, "lst2");  /* 添加按钮 */

我们也可以为其添加图标:

图标类型参阅 LVGL 控件之标签(lv_label)

在这里插入图片描述

lv_obj_t *list = lv_list_create(lv_scr_act());  /* 创建列表 */
lv_obj_set_width(list, 200);                    /* 设置列表宽度 */
lv_obj_set_height(list, 150);                   /* 设置列表高度 */
lv_obj_center(list);

lv_obj_t *btn;
btn = lv_list_add_btn(list, LV_SYMBOL_FILE, "New");        /* 添加按钮 */
btn = lv_list_add_btn(list, LV_SYMBOL_DIRECTORY, "Open");  /* 添加按钮 */

2、设置列表文本

列表文本主要用于一类按钮的功能提示或按钮分类。用户需要添加列表文本,可调用 lv_list_add_text 函数进行设置,该函数有两个形参,第一个形参指向列表对象,第二个形参表示设置的文本。

lv_obj_t* list = lv_list_create(lv_scr_act());  /* 创建列表 */
lv_obj_set_width(list, 200);                    /* 设置列表宽度 */
lv_obj_set_height(list, 200);                   /* 设置列表高度 */
lv_obj_center(list);

lv_obj_t* btn;
lv_list_add_text(list, "File");                            /* 列表添加标签 */
btn = lv_list_add_btn(list, LV_SYMBOL_FILE, "New");        /* 添加按钮 */
btn = lv_list_add_btn(list, LV_SYMBOL_DIRECTORY, "Open");  /* 添加按钮 */
lv_list_add_text(list, "Direction");                       /* 列表添加标签 */
btn = lv_list_add_btn(list, LV_SYMBOL_UP, "Up");           /* 添加按钮 */
btn = lv_list_add_btn(list, LV_SYMBOL_DOWN, "Down");       /* 添加按钮 */

3、API 函数

函数描述
lv_list_create()创建列表部件
lv_list_add_text()添加列表文本
lv_list_add_btn()添加列表按钮
lv_list_get_btn_text()获取按下的按钮文本
lvgl 9.3 版本中,`LV_PART_LIST` 的移除主要是为了优化 API 设计并减少冗余部分。以下是关于 `LV_PART_LIST` 替代方案及其移除原因的具体分析: ### 移除原因 随着 lvgl 不断迭代更新,API 的设计目标之一是简化对象的样式管理逻辑。`LV_PART_LIST` 被认为是一个较为特殊的状态标志位,在实际应用中的需求较低,因此被移除以降低复杂度[^4]。 具体来说,`LV_PART_LIST` 主要用于列表组件的部分状态定义,但在新版本中这些功能已经被更通用的部件属性所取代。通过这种方式可以更好地统一不同控件之间的行为模式,从而提升开发者的使用体验。 ### 替代方案 对于原本依赖于 `LV_PART_LIST` 实现的功能,开发者可以通过其他方式实现相同效果: 1. **使用新的部件属性** 新增了一些更加灵活和直观的参数来代替旧有的部分标记。例如,如果之前利用 `LV_PART_LIST` 来控制某些显示特性,则现在可能需要调整为设置具体的样式或者调用特定函数完成相应操作。 2. **自定义绘制方法** 如果确实存在无法完全由现有接口满足的独特需求,还可以考虑采用自定义绘图的方式来自行处理所需视觉效果。这通常涉及重写控件的基础渲染过程,并结合事件监听机制动态改变外观表现形式。 下面给出一段简单的代码示例展示如何通过设置样式达到原 `LV_PART_LIST` 所能达成的效果: ```c // 创建一个基本样式的初始化器结构体实例 static lv_style_t style; lv_style_init(&style); // 设置背景颜色以及其他相关属性... lv_style_set_bg_color(&style, lv_palette_main(LV_PALETTE_BLUE)); lv_style_set_radius(&style, LV_RADIUS_CIRCLE); // 将创建好的样式应用于某个按钮对象上 lv_obj_add_style(obj, &style, LV_STATE_DEFAULT | LV_STATE_USER_1); // 假设这里替换掉了原先针对LIST的操作 ``` 以上片段仅作为示意用途,请依据实际情况修改适配自己的项目环境。
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值