LVGL 8.3 LIST 控件实现菜单项选择的功能
一. list控件不能直接选择item,下面介绍一种实现思路:使用group实现
1定义一个组g_list;
2在创建好的屏幕Menu中添加一个list控件,一个按钮btn_6;
3为list控件添加若干个子项;
4为Menu屏幕添加处理函数,响应加载屏幕事件
5为按钮添加事件处理函数
二.以下为主要代码
1在Menu屏幕加载时对group进行初始化,如下代码 :
static void Menu_event_handler (lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code) {
case LV_EVENT_SCREEN_LOADED:
{
lv_group_add_obj(g_list, Menu_list_menu_item1);
lv_group_add_obj(g_list, Menu_list_menu_item2);
lv_group_add_obj(g_list, Menu_list_menu_item3);
lv_group_add_obj(g_list, Menu_list_menu_item4);
lv_group_add_obj(g_list, Menu_list_menu_item5);
lv_group_add_obj(g_list, Menu_list_menu_item6);
lv_group_add_obj(g_list, Menu_list_menu_item7);
lv_group_add_obj(g_list, Menu_list_menu_item8);
lv_indev_set_group(indev_button,g_list);//指定输入设备
lv_obj_t * indev_obj_act = Menu_list_menu_item1;//指定默认选择项
lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL);//设定选择项的状态
break;
}
default:
break;
}
}
2为按钮添加事件处理函数
static void Menu_btn_6_event_handler (lv_event_t *e)
{
lv_event_code_t code = lv_event_get_code(e);
switch (code) {
case LV_EVENT_SHORT_CLICKED:
{
lv_obj_t * indev_obj_act = lv_group_get_focused(g_list);
lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL);//复位上一个选项项
lv_group_focus_next(g_list) ;
indev_obj_act = lv_group_get_focused(g_list);
lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL);//设定选择项的状态
break;
}
default:
break;
}
}

127

被折叠的 条评论
为什么被折叠?



