这一篇来学习一下flex grow(弹性增长),还是通过codeblock来模拟代码的运行,代码如下:

void lv_demonstrate_flex_grow()
{
    lv_obj_t * cont = lv_obj_create(lv_scr_act()); // 基于屏幕创建一个cont容器对象
    if (cont == NULL)
    {
        return;
    }

    lv_obj_set_size(cont, 400, 220); // 设置对象大小
    lv_obj_center(cont); // 对象显示在屏幕中央
    lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW); // 设置对象弹性布局的排列方式,把子对象排成一行,而不需要包裹

    lv_obj_t * obj = NULL;
    obj = lv_obj_create(cont);
    if (obj != NULL)
    {
        lv_obj_set_size(obj, 20, 40); // 设置对象大小
    }

    obj = lv_obj_create(cont);
    if (obj != NULL)
    {
        lv_obj_set_height(obj, 40); // 设置对象高度
        lv_obj_set_flex_grow(obj, 1);  // 宽度弹性增长,使用一份的剩余空间
    }

    obj = lv_obj_create(cont);
    if (obj != NULL)
    {
        lv_obj_set_height(obj, 40);
        lv_obj_set_flex_grow(obj, 2);   // 宽度弹性增长,使用2份的剩余空间
    }

    obj = lv_obj_create(cont);
    if (obj != NULL)
    {
        lv_obj_set_height(obj, 40);
        lv_obj_set_flex_grow(obj, 3);   // 宽度弹性增长,使用3份的剩余空间
    }

    obj = lv_obj_create(cont);
    if (obj != NULL)
    {
        lv_obj_set_size(obj, 40, 40);
    }
}

运行结果如下:

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐