弹性流(flex-flow)的应用

接口说明

        在使用弹性布局时,需要考虑两个问题,第一个问题是排列时的方向及是否换行?第二个问题是排列时一行的元素如何放置、不同高度元素如何对齐及整个内容区域如何放置?

        第一个问题使用lv_obj_set_flex_flow()接口即可,参数选择按行排列或者按行+换行排列即可。

        第二个问题使用lv_obj_set_flex_align()接口,此接口有三个入口参数,宏定义相同,但作用不同,第一个参数负责改变每行元素的间距(参考效果三),第二个参数负责改变每行元素上下对齐的方式(参考效果四),第三个参数负责设置内容区域的位置(参考效果五)。

参数说明

        around与evenly两个参数的区别在于边间距的大小不同。

         between是紧靠边间距(默认值),为固定值。

效果一:5个大小不同的元素排列

 代码实现

    lv_obj_t *obj = lv_obj_create(lv_scr_act());
    lv_obj_set_size(obj,240,150);
    lv_obj_align(obj,LV_ALIGN_CENTER,0,0);
    lv_obj_clear_flag(obj,LV_OBJ_FLAG_SCROLLABLE);
    lv_obj_set_flex_flow(obj,LV_FLEX_FLOW_ROW);

    lv_obj_t *btn1 = lv_btn_create(obj);
    lv_obj_set_size(btn1,80,20);
    lv_obj_t *label1 = lv_label_create(btn1);
    lv_label_set_text(label1,"01");

    lv_obj_t *btn2 = lv_btn_create(obj);
    lv_obj_set_size(btn2,80,40);
    lv_obj_t *label2 = lv_label_create(btn2);
    lv_label_set_text(label2,"02");

    lv_obj_t *btn3 = lv_btn_create(obj);
    lv_obj_set_size(btn3,80,80);
    lv_obj_t *label3 = lv_label_create(btn3);
    lv_label_set_text(label3,"03");

    lv_obj_t *btn4 = lv_btn_create(obj);
    lv_obj_set_size(btn4,80,50);
    lv_obj_t *label4 = lv_label_create(btn4);
    lv_label_set_text(label4,"04");

    lv_obj_t *btn5 = lv_btn_create(obj);
    lv_obj_set_size(btn5,80,80);
    lv_obj_t *label5 = lv_label_create(btn5);
    lv_label_set_text(label5,"05");

效果二:5个大小不同的元素排列+换行

代码实现

lv_obj_set_flex_flow(obj,LV_FLEX_FLOW_ROW);

效果三:元素在每行按照等间距方式排列

 代码实现

lv_obj_set_flex_align(obj,LV_FLEX_ALIGN_SPACE_EVENLY,0,0);

  效果四:不同高度的元素底部对齐

代码实现

lv_obj_set_flex_align(obj,LV_FLEX_ALIGN_SPACE_EVENLY,LV_FLEX_ALIGN_END,0);

效果五:内容居中显示

代码实现

lv_obj_set_flex_align(obj,LV_FLEX_ALIGN_SPACE_EVENLY,LV_FLEX_ALIGN_END,LV_FLEX_ALIGN_CENTER);

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
引用\[1\]中提到,flex-flow属性是flex-direction属性和flex-wrap属性的简写形式。它用于定义flex容器中子项的排列方式。flex-flow属性的默认值是row nowrap,表示子项在主轴上水平排列,并且不换行。可以通过以下方式设置flex-flow属性的值:flex-flow: {flex-direction} {flex-wrap}; flex-flow: row nowrap; flex-flow: row wrap; flex-flow: row wrap-reverse; flex-flow: column nowrap; flex-flow: column wrap; flex-flow: column wrap-reverse; \[1\] 在引用\[2\]中的示例代码中,justify-content属性被用来定义子项在主轴上的对齐方式。可选的值有flex-start、flex-end、center、space-between和space-around。在这个例子中,justify-content属性被设置为flex-start,表示子项在主轴上靠左对齐。\[2\] 在引用\[3\]中提到,flex-direction属性决定了主轴的方向,从而决定了子元素在容器中的位置。它有四个可选值:row、row-reverse、column和column-reverse。在这个例子中,flex-direction属性被设置为column,表示主轴方向为垂直方向,子项在容器中从上到下排列。\[3\] 综上所述,css中的flex-flow属性用于设置flex容器中子项的排列方式,可以通过设置flex-direction属性和flex-wrap属性来实现。同时,可以使用justify-content属性来定义子项在主轴上的对齐方式,使用flex-direction属性来决定主轴的方向。 #### 引用[.reference_title] - *1* *2* *3* [响应式布局--flex学习](https://blog.csdn.net/qq_32845825/article/details/125486195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡姆图拉夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值