lvgl有哪些布局?
LVGL 提供了多种布局方式帮助你高效组织界面元素避免手动计算坐标。在 v8.2.0 中主要有以下几种布局方法1. 绝对定位手动设置坐标最基础的方式通过lv_obj_set_pos(obj, x, y)直接指定控件相对于父对象的位置。适用场景控件数量少、固定位置如状态栏图标。lv_obj_set_pos(btn,10,20);2. 对齐Alignment将控件相对于父对象或其他控件对齐支持偏移。常用函数lv_obj_center(obj)— 居中lv_obj_align(obj, LV_ALIGN_TOP_MID, dx, dy)— 顶部中间对齐lv_obj_align_to(obj, ref_obj, LV_ALIGN_OUT_RIGHT_TOP, dx, dy)— 相对于另一个控件对齐适用场景单一控件或控件组的位置固定但无需复杂的自动排列。lv_obj_align(btn,LV_ALIGN_BOTTOM_MID,0,-10);// 底部中间向上偏移103. Flex 布局弹性布局类似 CSS Flexbox让子控件在一行或一列中自动排列支持换行、对齐方式、间距等。启用方式lv_obj_set_flex_flow(container,LV_FLEX_FLOW_ROW);// 水平排列lv_obj_set_flex_align(container,LV_FLEX_ALIGN_CENTER,LV_FLEX_ALIGN_CENTER,LV_FLEX_ALIGN_CENTER);lv_obj_set_style_pad_row(container,10,0);// 行间距lv_obj_set_style_pad_column(container,5,0);// 列间距常用参数flex_flowLV_FLEX_FLOW_ROW水平、LV_FLEX_FLOW_COLUMN垂直、LV_FLEX_FLOW_ROW_WRAP换行等。flex_align主轴上对齐LV_FLEX_ALIGN_START/CENTER/END/SPACE_BETWEEN/SPACE_AROUND/SPACE_EVENLY和交叉轴对齐。适用场景列表、按钮组、工具栏等需要动态排列的控件组。4. Grid 布局网格布局将容器划分为网格子控件可指定占据的行列支持跨行跨列。启用方式staticlv_coord_tcol_dsc[]{100,LV_GRID_FR(1),100,LV_GRID_TEMPLATE_LAST};staticlv_coord_trow_dsc[]{40,40,LV_GRID_TEMPLATE_LAST};lv_obj_set_grid_dsc_array(cont,col_dsc,row_dsc);// 将按钮放置在网格的第0行第1列lv_obj_set_grid_cell(btn,LV_GRID_ALIGN_STRETCH,1,1,LV_GRID_ALIGN_CENTER,0,1);参数col_dsc/row_dsc定义列宽/行高可以使用固定值或LV_GRID_FR(1)比例分配剩余空间。lv_obj_set_grid_cell设置控件位置和跨度。适用场景复杂表单、仪表盘、等宽多列布局。5. 布局容器lv_obj_set_layoutLVGL 内置了几种简单布局可通过lv_obj_set_layout(cont, LV_LAYOUT_...)快速启用LV_LAYOUT_NONE默认无特殊布局LV_LAYOUT_FLEX启用 Flex 布局效果与lv_obj_set_flex_flow类似LV_LAYOUT_GRID启用 Grid 布局通常更推荐直接使用lv_obj_set_flex_flow和lv_obj_set_grid_dsc_array因为它们提供了更丰富的控制。布局选择建议场景推荐布局固定位置如状态栏绝对定位 对齐垂直排列的菜单、列表Flex列水平排列的工具栏Flex行复杂仪表板、等分网格Grid响应式布局自适应宽高Flex配合LV_FLEX_ALIGN_SPACE_BETWEEN或 Grid配合LV_GRID_FR注意事项布局与样式布局主要控制位置和尺寸样式则控制外观两者可叠加。容器背景启用布局的容器如果希望有背景需设置lv_obj_set_style_bg_opa(cont, LV_OPA_COVER, 0)等样式。子控件大小在布局中子控件可通过lv_obj_set_size固定大小也可由布局自动分配如lv_obj_set_flex_grow。掌握这些布局方法后你可以轻松构建出适应不同屏幕尺寸的界面无需为每个控件手动计算坐标。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2449886.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!