LVGL网格布局测试
·
一、测试1
static lv_coord_t col_dsc[] = { 80, 80, LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST };
static lv_coord_t row_dsc[] = { 45, LV_GRID_TEMPLATE_LAST };
lv_obj_t* page = lv_img_create(lv_scr_act());
lv_obj_center(page);
lv_obj_set_size(page, 800, 600);
isu_set_obj_default_style(page);
lv_obj_t* cont = lv_obj_create(page);
lv_obj_set_size(cont, 400, 300);
lv_obj_align(cont, LV_ALIGN_LEFT_MID, 0, 0);
lv_obj_set_layout(cont, LV_LAYOUT_GRID);
lv_obj_set_style_grid_column_dsc_array(cont, col_dsc, 0);
lv_obj_set_style_grid_row_dsc_array(cont, row_dsc, 0);
for (int i = 0; i < 3; i++)
{
lv_obj_t* label_cont = lv_obj_create(cont);
lv_obj_t*label = lv_label_create(label_cont);
lv_label_set_text(label, "123");
lv_obj_set_grid_cell(label_cont, LV_GRID_ALIGN_START, i, 1, LV_GRID_ALIGN_CENTER, 0, 1);
}

二、测试2
LV_LOG_WARN("layout_test");
static lv_coord_t col_dsc[] = { 80, 80, LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST };
static lv_coord_t row_dsc[] = { 45, LV_GRID_TEMPLATE_LAST };
lv_obj_t* page = lv_img_create(lv_scr_act());
lv_obj_center(page);
lv_obj_set_size(page, 800, 600);
isu_set_obj_default_style(page);
lv_obj_t* cont = lv_obj_create(page);
lv_obj_set_size(cont, 400, 300);
lv_obj_align(cont, LV_ALIGN_LEFT_MID, 0, 0);//设置cont左中对齐
lv_obj_set_layout(cont, LV_LAYOUT_GRID);
lv_obj_set_style_grid_column_dsc_array(cont, col_dsc, 0);
lv_obj_set_style_grid_row_dsc_array(cont, row_dsc, 0);
for (int i = 0; i < 3; i++)
{
lv_obj_t* label_cont = lv_obj_create(cont);
lv_obj_set_size(label_cont, 80, 45);
lv_obj_t* label = lv_label_create(label_cont);
lv_obj_center(label);
lv_label_set_text(label, "123");
if (i == 2)
{
lv_obj_set_grid_cell(label_cont, LV_GRID_ALIGN_END, i, 1, LV_GRID_ALIGN_CENTER, 0, 1);
}
else {
lv_obj_set_grid_cell(label_cont, LV_GRID_ALIGN_START, i, 1, LV_GRID_ALIGN_CENTER, 0, 1);
}
}


1,在不指定cont的style情况下,cont默认是存在padding的,所以label_cont在cont内部的左侧与上边存在空隙。若要消除这种空隙,则需要给cont的pad致0。
三、测试3
LV_LOG_WARN("layout_test");
static lv_coord_t col_dsc[] = { 80, 80, LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST };
static lv_coord_t row_dsc[] = { 45, 45, LV_GRID_TEMPLATE_LAST };
static lv_style_t style_control;
if (!(style_control.sentinel == LV_STYLE_SENTINEL_VALUE && style_control.prop_cnt > 1))
{
lv_style_init(&style_control);
}
else
{
lv_style_reset(&style_control);
}
lv_style_set_radius(&style_control, 0);
lv_style_set_pad_all(&style_control, 0);
lv_style_set_border_width(&style_control, 0);
lv_style_set_outline_width(&style_control, 0);
lv_style_set_bg_color(&style_control, lv_color_make(256, 128, 64));
lv_style_set_bg_opa(&style_control, 50);
lv_obj_t* page = lv_img_create(lv_scr_act());
lv_obj_center(page);
lv_obj_set_size(page, 800, 600);
isu_set_obj_default_style(page);
lv_obj_t* cont = lv_obj_create(page);
lv_obj_add_style(cont, &style_control, LV_PART_MAIN);
lv_obj_set_size(cont, 400, 300);
lv_obj_align(cont, LV_ALIGN_LEFT_MID, 0, 0);//设置cont左中对齐
lv_obj_set_layout(cont, LV_LAYOUT_GRID);
lv_obj_set_style_grid_column_dsc_array(cont, col_dsc, 0);
lv_obj_set_style_grid_row_dsc_array(cont, row_dsc, 0);
for (int j = 0; j < 2; j++)
{
for (int i = 0; i < 3; i++)
{
lv_obj_t* label_cont = lv_obj_create(cont);
lv_obj_set_size(label_cont, 100, 45);
lv_obj_add_style(label_cont, &style_control, LV_PART_MAIN);
lv_obj_t* label = lv_label_create(label_cont);
lv_obj_center(label);
lv_label_set_text(label, "123");
if (i == 2)
{
lv_obj_set_grid_cell(label_cont, LV_GRID_ALIGN_END, i, 1, LV_GRID_ALIGN_CENTER, j, 1);
}
else {
lv_obj_set_grid_cell(label_cont, LV_GRID_ALIGN_START, i, 1, LV_GRID_ALIGN_CENTER, j, 1);
}
}
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)