flex布局 踩坑

 

以上是flex布局在各版本操作系统兼容性的对照表,在不兼容的版本中加入 -webkit-前缀即可解决。

转载于:https://www.cnblogs.com/liangjing-yy/p/9105498.html

<think>好的,用户想了解LVGL 8.3中垂直布局的使用方法。我需要先回忆一下LVGL的布局机制,特别是版本8.3的相关内容。首先,垂直布局应该属于Flex布局的一种,因为在LVGL中,Flex布局可以设置方向为垂直或水平。用户可能之前用过旧版的布局方式,或者对Flex布局不太熟悉,需要详细说明步骤。 首先,我应该介绍如何创建容器对象,这是布局的基础。然后,设置Flex布局并指定方向为垂直,这一步是关键。接下来需要设置对齐方式和填充等属性,这些会影响子元素的排列。可能还需要提到如何添加子元素,以及如何调整它们的尺寸和对齐方式。用户可能会有疑问,比如如何处理不同高度的子元素,或者如何让某个子元素固定在底部,这时候可能需要举例说明。 另外,LVGL 8.3可能有特定的API,需要确认函数名称是否正确,比如lv_obj_set_flex_flow和lv_obj_set_style_flex_main_place等。需要确保使用的函数和参数与版本8.3一致,避免给出过时或错误的代码示例。同时,要提醒用户注意父容器和子元素的样式设置,比如padding和margin可能会影响布局效果。 可能还需要覆盖常见的用例,比如等间距分布、顶部对齐、底部对齐,以及单个子元素的特殊处理。用户可能在实际应用中遇到问题,比如子元素溢出容器,这时候需要解释如何处理滚动或者调整布局参数。最后,总结一下使用步骤,确保用户有一个清晰的流程可以参考。如果有常见的错误或注意事项,也应该一并提及,帮助用户避免。</think>LVGL 8.3 垂直布局使用指南(Flex布局实现) LVGL 8.3 通过 Flex 布局实现垂直排列,以下是具体步骤: 1. 创建基础容器 ```c lv_obj_t * cont = lv_obj_create(lv_scr_act()); lv_obj_set_size(cont, 200, 200); // 设置容器尺寸 lv_obj_center(cont); // 居中显示 ``` 2. 设置垂直布局属性 ```c lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_COLUMN); // 关键参数:设置垂直布局 lv_obj_set_style_pad_all(cont, 10, 0); // 设置内边距 ``` 3. 添加子元素(示例) ```c // 创建3个按钮 lv_obj_t * btn1 = lv_btn_create(cont); lv_obj_t * btn2 = lv_btn_create(cont); lv_obj_t * btn3 = lv_btn_create(cont); // 设置子元素尺寸 lv_obj_set_width(btn1, lv_pct(100)); // 宽度100%父容器 lv_obj_set_height(btn1, 50); ``` 4. 常用对齐方式设置 ```c // 主轴对齐(垂直方向) lv_obj_set_style_flex_main_place(cont, LV_FLEX_ALIGN_CENTER, 0); // 垂直居中 // 交叉轴对齐(水平方向) lv_obj_set_style_flex_cross_place(cont, LV_FLEX_ALIGN_CENTER, 0); // 水平居中 ``` 典型应用场景: 1. 等间距排列 $$lv_obj_set_style_flex_track_place(cont, LV_FLEX_ALIGN_SPACE_EVENLY, 0);$$ 2. 底部对齐 ```c lv_obj_set_style_flex_main_place(cont, LV_FLEX_ALIGN_END, 0); ``` 3. 混合高度元素排列 ```c lv_obj_set_height(btn1, 30); lv_obj_set_height(btn2, 50); // 不同高度元素会自动间隔排列 ``` 注意事项: 1. 必须设置容器尺寸,未指定尺寸时布局可能失效 2. 使用 `lv_pct()` 设置百分比宽度时,父容器需有明确宽度 3. 内容溢出时可添加滚动条: ```c lv_obj_set_style_overflow(cont, LV_OVERFLOW_SCROLL, 0); ``` 调试技巧: - 启用 `LV_USE_FLEX` 和 `LV_USE_DEBUG` 配置 - 使用 `LV_OBJ_FLAG_LAYOUT_1` 标志显示布局边界 - 通过 `lv_obj_get_scroll_top()` 检测滚动位置 完整示例代码: ```c lv_obj_t * cont = lv_obj_create(lv_scr_act()); lv_obj_set_size(cont, 200, 300); lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_COLUMN); lv_obj_set_style_pad_all(cont, 10, 0); for(int i = 0; i < 5; i++) { lv_obj_t * btn = lv_btn_create(cont); lv_obj_set_size(btn, lv_pct(100), 40); lv_obj_set_style_radius(btn, 5, 0); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值