一. LVGL GUI列表控件的概念

列表是从背景页面和其上的按钮构建的。按钮包含一个可选的类似图标的图像(也可以是一个符号)和一个 Label。当列表足够长时,可以滚动它。

二. LVGL GUI列表小部件和样式

列表与页面具有相同的部分

  • LV_LIST_PART_BG
  • LV_LIST_PART_SCRL
  • LV_LIST_PART_SCRLBAR
  • LV_LIST_PART_EDGE_FLASH

有关详细信息,请参见页面文档。
列表上的按钮被视为普通按钮,它们只有一个主要部分称为 LV_BTN_PART_MAIN 。

三. LVGL GUI列表控件的使用

1. 增加按键(Add buttons)

可以用这个函数来添加一个元素(按键)到列表中lv_list_add_btn(list, &icon_img, "Text")

其中第二个参数可以是图片,可以是符号,如果不想设置,可以设置为NULL!

void lvgl_list_add_button(void)
{lv_obj_t* list1 = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list1, 160, 200);lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);/*Add buttons to the list*/lv_obj_t* list_btn;list_btn = lv_list_add_btn(list1, NULL, "Open");list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Close");list_btn = lv_list_add_btn(list1, NULL, "Edit");
}

2. 删除按键(Delete buttons)

用这个函数删除列表某一个索引的元素(按键)lv_list_remove(list, btn_index)

用这个函数清空列表lv_list_clean(list)

3. 手动导航(Manual navigation)

可以用这个函数lv_list_up(list) 选择上一个列表元素

可以用这个函数lv_list_down(list)选择列表下一个元素

用这个函数把某一个button获取焦点lv_list_focus(btn, LV_ANIM_ON/OFF)

我们写个代码实验下,通过button跟列表做一个小的组合例子(另外,感觉这个没用呢?是我写的有问题还是LVGL得bug?)

lv_obj_t* list_navig;
lv_obj_t* list_button;static void list_navig_up_event_handler(lv_obj_t* obj, lv_event_t event)
{if (event == LV_EVENT_CLICKED) {lv_list_up(list_navig);}
}static void list_navig_down_event_handler(lv_obj_t* obj, lv_event_t event)
{if (event == LV_EVENT_CLICKED) {lv_list_down(list_navig);}
}
void lvgl_list_navig_test(void)
{list_navig = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list_navig, 160, 200);lv_obj_align(list_navig, NULL, LV_ALIGN_CENTER, 0, 0);/*Add buttons to the list*/list_button = lv_list_add_btn(list_navig, NULL, "Open");list_button = lv_list_add_btn(list_navig, NULL, "Close");list_button = lv_list_add_btn(list_navig, NULL, "Edit");lv_list_focus(list_button, LV_ANIM_ON);lv_obj_t* bn_up = lv_btn_create(lv_scr_act(),NULL);lv_obj_t* bn_down = lv_btn_create(lv_scr_act(), NULL);lv_obj_set_style_local_value_str(bn_up, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "UP");lv_obj_set_style_local_value_str(bn_down, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "DOWND");lv_obj_align(bn_up, list_navig, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);lv_obj_align(bn_down, bn_up, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);lv_obj_set_event_cb(bn_up, list_navig_up_event_handler);lv_obj_set_event_cb(bn_down, list_navig_down_event_handler);
}

4. 布局(Layout)

默认列表是纵向的,但是可以设置为横向,用这个函数lv_list_set_layout(list, LV_LAYOUT_ROW_MID)

void lvgl_list_layout_test(void)
{lv_obj_t* list1 = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list1, 160, 200);lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);/*Add buttons to the list*/lv_obj_t* list_button;list_button = lv_list_add_btn(list1, NULL, "Open");list_button = lv_list_add_btn(list1, NULL, "Close");list_button = lv_list_add_btn(list1, NULL, "Edit");lv_obj_t* list2 = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list2, 160, 200);lv_obj_align(list2, list1, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);/*Add buttons to the list*/list_button = lv_list_add_btn(list2, NULL, "Open");list_button = lv_list_add_btn(list2, NULL, "Close");list_button = lv_list_add_btn(list2, NULL, "Edit");lv_list_set_layout(list2, LV_LAYOUT_ROW_MID);
}

5. 边界闪烁(Edge flash)

用这个函数开启边界闪烁lv_list_set_edge_flash(list, true)

6. 滚动传播(Scroll propagation)

用这个函数开启滚动传播lv_list_set_scroll_propagation(list, true)

7. 事件(Event)

static void list_event_handler(lv_obj_t* obj, lv_event_t event)
{if (event == LV_EVENT_CLICKED) {printf("Clicked: %s\n", lv_list_get_btn_text(obj));}
}void lvgl_list_test(void)
{/*Create a list*/lv_obj_t* list1 = lv_list_create(lv_scr_act(), NULL);lv_obj_set_size(list1, 160, 200);lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0);/*Add buttons to the list*/lv_obj_t* list_btn;list_btn = lv_list_add_btn(list1, LV_SYMBOL_FILE, "New");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_DIRECTORY, "Open");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Delete");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_EDIT, "Edit");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_SAVE, "Save");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_BELL, "Notify");lv_obj_set_event_cb(list_btn, list_event_handler);list_btn = lv_list_add_btn(list1, LV_SYMBOL_BATTERY_FULL, "Battery");lv_obj_set_event_cb(list_btn, list_event_handler);
}

好了,完结了,更多精彩继续戳↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

GUI怎么能缺少列表, LVGL『List列表控件』介绍相关推荐

  1. 制作一个GUI仪表盘,安排!LVGL『Gauge仪表盘控件』介绍

    一. LVGL GUI仪表盘控件的概念 仪表盘是一种带有刻度标签和一根或多根针的仪表.比如车速/车转速等 二. LVGL GUI仪表盘小部件和样式 量规的主要部分称为 LV_GAUGE_PART_MA ...

  2. 嵌入式GUI LVGL『Tableview选项卡控件』介绍

    一. LVGL GUI开关控件的概念 选项卡视图对象可用于组织选项卡中的内容. 二. LVGL GUI开关小部件和样式 Tab 视图对象包含几个部分.主要是 LV_TABVIEW_PART_BG .它 ...

  3. 肝一个嵌入式日历吧!LVGL『Calendar日历控件』介绍

    一. LVGL GUI日历控件的概念 LVGL做的日历空间还是比较好看的,而且需要我们做的事情很少,LVGL的日历控件有以下功能 突出显示当天 突出显示任何用户定义的日期 显示日期名称 单击按钮进入下 ...

  4. 想做输入法界面?安排,LVGL『keyboard键盘控件』介绍

    一. LVGL GUI键盘控件的概念 Keyboard 对象是一个特殊的 Button 矩阵,具有预定义的按键映射和其他功能,以实现虚拟键盘来编写文本. 二. LVGL GUI键盘小部件和样式 类似于 ...

  5. LVGL『Canvas画布控件』介绍

    一. LVGL GUI画布控件的概念 画布继承自图像,用户可以在其中绘制任何内容.可以使用 lvgl 的绘图引擎在此处绘制矩形,文本,图像,圆弧.除了一些"效果",还可以应用,例如 ...

  6. 嵌入式GUI LVGL『Text Area文本区域控件』介绍

    一. LVGL GUI文本区域控件的概念 文本区域是一个带有标签和光标的页面.文本或字符可以添加到它.长行被换行,当文本足够长时,可以滚动文本区域. 二. LVGL GUI文本区域小部件和样式 文本区 ...

  7. 嵌入式GUI LVGL『Tile View拼接视图控件』介绍

    一. LVGL GUI拼接视图控件的概念 Tileview是一个容器对象,其中的元素(称为tiles)可以以网格形式排列.通过滑动,用户可以在这些贴图之间导航. 如果Tileview是屏幕大小,它会提 ...

  8. GUI一灯大师,LVGL『LED控件』介绍

    一. LVGL GUI LED控件的概念 LED 是矩形(或圆形)的对象.它的亮度可以调节.亮度降低时,LED 的颜色会变暗. 二. LVGL GUI LED小部件和样式 LED 只有一个主要部分,称 ...

  9. 类似PS的蒙版?可以实现,LVGL『Object mask对象蒙版控件』介绍

    一. LVGL GUI对象蒙版控件的概念 绘制其子级时,对象蒙版能够向图形添加一些蒙版 二. LVGL GUI对象蒙版小部件和样式 对象蒙版只有一个主要部分 LV_OBJMASK_PART_BG ,它 ...

最新文章

  1. NC:菌物组构建---随机性v.确定性、干旱胁迫、宿主筛选、统一动态(郭良栋、杨军点评)
  2. Android零基础入门第40节:自定义ArrayAdapter
  3. 025_Jedis集群
  4. lintcode-167-链表求和
  5. 蓝叠 正在检查服务器最新,Windows update一直停留在正在检查更新
  6. SpringMVC实现RESTful风格
  7. java使用nio读写文件
  8. php android 乱码,如何解决android php 中文乱码问题
  9. 二进制,八进制十进制十六进制之间数据转换
  10. UE4项目的命名规则
  11. myeclipse编写的html页面乱码问题
  12. tf data 常用操作
  13. Pyqt5 遇到的超级无敌大坑!clicked.connect后面的connect出现下划线 计算机积极拒绝问题
  14. Redis学习之hget命令
  15. scp构造端口_scp端口号(scp默认端口号)
  16. operate new、delete new和placement new
  17. 第六章 类与对象 类的包含
  18. SQL Server排序规则
  19. Win11如何更改字体样式?Win11更改字体样式的方法
  20. (二)【Matlab】Matlab矩阵处理

热门文章

  1. 在Word中为标题样式添加自动编号功能
  2. Python数据分析训练营——Python基础语法
  3. .net 程序访问数据库之异常SqlException (0x80131904)
  4. 跨国企业在中国 | 德国马夸特在华第二家工厂威海开业;格兰富水环境治理体验中心落户福州...
  5. 自立门诊-20220822
  6. 小米与美的的“初吻”是为了什么
  7. 探秘2022亚运会主场馆丨“大小莲花”智慧升级,带你见证科技力量
  8. vue 引入图片出现错误 Cannot find module ‘./XXX.jpg‘e
  9. Xiaomi Mi Notebook Air 13.3“ 2016黑苹果efi
  10. 4.13黄金多空博弈,白银TD最新操作