Hi,大家好,欢迎来到树莓派之littlevGL课堂,我们在上节课中学习了线条控件,本节课我们学习列表控件,废话不多说! 一 有图有真相 
这就是列表控件,大家有没有想到什么具体应用场景呢?其实,列表还有蛮多的应用场景的,比如文件列表,歌曲列表等等,大家可以继续思考一下还有什么地方可以应用列表控件。 二 代码分析 用户可下载"圆弧对象(lv_arc)的使用"文章末尾的Demo工程(点击我直接下载),参考圆弧对象(lv_arc)的使用文章,将以下Demo代码复制到Demo工程test.c文件空白处.然后在test.c文件的create_test()函数中增加list_test()函数测试。 01 | static void list_event_handler(lv_obj_t * obj, lv_event_t event) |
03 | if (event == LV_EVENT_CLICKED) { |
04 | printf ( "Clicked: %s\n" , lv_list_get_btn_text(obj)); |
11 | lv_obj_t * list1 = lv_list_create(lv_scr_act(), NULL); |
12 | lv_obj_set_size(list1, 160, 200); |
13 | lv_obj_align(list1, NULL, LV_ALIGN_CENTER, 0, 0); |
19 | list_btn = lv_list_add_btn(list1, LV_SYMBOL_FILE, "New" ); |
20 | lv_obj_set_event_cb(list_btn, list_event_handler); |
22 | list_btn = lv_list_add_btn(list1, LV_SYMBOL_DIRECTORY, "Open" ); |
23 | lv_obj_set_event_cb(list_btn, list_event_handler); |
25 | list_btn = lv_list_add_btn(list1, LV_SYMBOL_CLOSE, "Delete" ); |
26 | lv_obj_set_event_cb(list_btn, list_event_handler); |
28 | list_btn = lv_list_add_btn(list1, LV_SYMBOL_EDIT, "Edit" ); |
29 | lv_obj_set_event_cb(list_btn, list_event_handler); |
31 | list_btn = lv_list_add_btn(list1, NULL, "Save" ); |
32 | lv_obj_set_event_cb(list_btn, list_event_handler); |
同样的,列表控件是有可以点击选择的属性,所以我们这里也需要一个回调函数用来处理,大家可能发现代码是非常简单了,没错,就是很简单,大部分代码都是在添加选项。 我们先创建了一个列表对象,然后我们分别添加了五个列表元素: 1 | lv_list_add_btn(list1, LV_SYMBOL_FILE, "New" ); |
大家有没有觉得第二个参数很熟悉呢?没错,那就是我们前面学习图片控件的时候说的自带的小图标,大家忘记的可以去看看之前的教程,当然你如果只想显示后面的文字也可以,你可以参照上面最后一个选项,要将此参数设置为NULL即可。 1 | lv_obj_set_event_cb(list_btn, list_event_handler); |
这里需要注意的是,当我们每添加一个元素时都需要设置一下回调函数,这一点相对来说还是有点麻烦的,因为这里的每一个元素其实都是从按钮控件派生而来的,所以每个选项之间都是独立的,正因为如此才需要我们每添加一个元素就设置一次。
OK,本节课就到这里,下节课我们学习一个跟我之前学习的仪表控件类似的控件,不过这里叫线表(lv_lmeter)?没想好该怎么翻译,所以就直译了,那我们下节课见! |