1. lv_scr_act()
功能
获取当前活跃的屏幕对象(Screen Object)。
- LVGL 中所有控件的父容器必须是屏幕或另一个容器,屏幕是根容器。
- 默认情况下,LVGL 会自动创建一个主屏幕,此函数返回它的指针。
参数
- 无参数
直接调用即可,例如:lv_scr_act()
。
返回值
- 类型:
lv_obj_t*
(指向屏幕对象的指针)。
示例
lv_obj_t* screen = lv_scr_act(); // 获取当前屏幕对象
2. lv_switch_create(parent)
功能
创建一个开关控件(Switch Widget)。
- 开关是 LVGL 提供的交互控件,支持滑动切换状态(开/关)。
参数
parent
类型:lv_obj_t*
含义:父容器对象,新创建的开关会附加到该容器中。
常用值:lv_scr_act()
:附加到当前屏幕。- 其他容器(如
lv_obj_create(parent)
创建的面板)。
返回值
- 类型:
lv_obj_t*
(指向新创建的开关控件的指针)。
示例
lv_obj_t* parent_container = lv_obj_create(lv_scr_act()); // 创建一个容器
lv_obj_t* switch_obj = lv_switch_create(parent_container); // 将开关添加到容器中
3. lv_obj_set_size(obj, width, height)
功能
设置对象的宽度和高度。
- 单位默认为像素(px),但可通过 LVGL 配置支持百分比或自适应布局。
参数
-
obj
类型:lv_obj_t*
含义:要调整大小的目标对象。 -
width
类型:lv_coord_t
(通常是int16_t
)
含义:对象的宽度(单位:像素)。 -
height
类型:lv_coord_t
含义:对象的高度(单位:像素)。
注意事项
- 默认开关控件较小(如 40x20),需手动调整以适应界面设计。
- 如果控件内容(如文本、图标)超出尺寸,可能被裁剪。
示例
lv_obj_set_size(switch_obj, 120, 60); // 设置开关为 120x60 像素
4. lv_obj_align(obj, align_type, x_offset, y_offset)
功能
将对象对齐到父容器或指定位置。
- 对齐基于父容器的边界或中心。
参数
-
obj
类型:lv_obj_t*
含义:要对齐的目标对象。 -
align_type
类型:lv_align_t
(枚举类型)
含义:对齐方式,可选值包括:LV_ALIGN_CENTER
:居中对齐。LV_ALIGN_TOP_LEFT
:左上角对齐。LV_ALIGN_BOTTOM_RIGHT
:右下角对齐。- 其他对齐方式(共 12 种,如
LV_ALIGN_LEFT_MID
等)。
-
x_offset
类型:lv_coord_t
含义:对齐后的水平偏移量(正值向右,负值向左)。 -
y_offset
类型:lv_coord_t
含义:对齐后的垂直偏移量(正值向下,负值向上)。
注意事项
- 对齐的参考点是父容器的对应位置(如
LV_ALIGN_CENTER
是父容器的中心)。 - 若父容器大小变化,需重新对齐对象。
示例
// 将开关对齐到父容器中心,并向右偏移 20 像素
lv_obj_align(switch_obj, LV_ALIGN_CENTER, 20, 0);
综合示例
// 获取当前屏幕
lv_obj_t* screen = lv_scr_act();
// 在屏幕上创建一个开关控件
lv_obj_t* switch_obj = lv_switch_create(screen);
// 设置开关尺寸为 120x60 像素
lv_obj_set_size(switch_obj, 120, 60);
// 将开关对齐到屏幕中心
lv_obj_align(switch_obj, LV_ALIGN_CENTER, 0, 0);
扩展说明
-
父容器的选择
父容器可以是屏幕、面板(lv_obj
)、布局容器(如lv_flex
/lv_grid
)等。
示例:将开关添加到弹性布局容器:lv_obj_t* flex_container = lv_obj_create(lv_scr_act()); lv_flex_set_flex_flow(flex_container, LV_FLEX_FLOW_ROW); // 设置为横向弹性布局 lv_switch_create(flex_container); // 开关会自动根据布局排列
-
动态调整对齐
如果父容器大小变化(如旋转屏幕),可结合lv_obj_update_layout(parent)
和lv_obj_align()
重新对齐对象。 -
单位系统
LVGL 支持配置单位系统(如百分比、毫米),需通过lv_style_set_width(obj, LV_PCT(50))
实现。