本文使用的LVGL版本为7.x
参考:
很不错的LVGL学习笔记
屏幕
lv_scr_act
这个函数是用来获取当前活动的屏幕对象,默认情况下,代表最后创建的(唯一的)显示。
lv_obj_t *scr = lv_scr_act();
清屏
利用 lv_obj_clean 清空屏幕对象。
lv_obj_clean(lv_scr_act());
设置屏幕背景色
lv_obj_set_style_local_bg_color 可以用来设置对象的颜色
- obj:要设置背景色的对象指针。
- part:指定对象的哪个部分要设置背景色。对于屏幕对象,使用 LV_OBJ_PART_MAIN 表示主要部分。
- state:指定对象的状态。使用 LV_STATE_DEFAULT 表示默认状态。
- color:要设置的背景色。可以使用预定义的颜色常量,例如 LV_COLOR_RED,或使用 RGB 值来表示颜色。
lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED);
标签
默认的字体设置是 UTF8
创建标签
lv_obj_t *label1 = lv_label_create(lv_scr_act(), NULL);
长文本模式
- LV_LABEL_LONG_EXPAND:扩展对象的大小以适应文本大小。文本超出对象边界时,对象的大小将自动扩展以容纳整个文本。这将导致对象的大小根据文本的长度而变化。
- LV_LABEL_LONG_BREAK:保持对象的宽度,但是将过长的行进行自动换行,并且根据需要扩展对象的高度以容纳所有文本内容。
- LV_LABEL_LONG_DOT:保持对象的大小,并在文本过长时在末尾添加省略号(…)来指示被截断的文本内容。
- LV_LABEL_LONG_SCROLL:保持对象的大小,将文本内容进行滚动显示。文本从左向右滚动,直到完整显示文本内容,然后重新开始滚动。这会创建一个滚动文本的效果。
- LV_LABEL_LONG_SCROLL_CIRC:保持对象的大小,将文本内容以循环滚动的方式显示。文本从左向右滚动,直到完整显示文本内容,然后重新开始滚动。这将创建一个循环滚动的文本效果。
- LV_LABEL_LONG_CROP:保持对象的大小,并将超出对象边界的文本进行裁剪,只显示在对象范围内的文本内容。
长文本模式经常结合设置文本宽度一起使用,超出宽度自动换行:
lv_label_set_long_mode(label1, LV_LABEL_LONG_BREAK);
lv_obj_set_width(label1, 160 - 2);
对齐样式
lv_obj_align() 用于将对象对齐到父对象或屏幕的特定位置。
- obj:要对齐的对象指针,可以是标签对象。
- base:基准对象指针,用于确定对齐的参考坐标系。可以为 NULL 表示对齐到屏幕。在这里,如果第二个参数为 NULL,则表示将对象对齐到屏幕。
- align:对齐方式,指定了对象在基准对象或屏幕上的对齐位置。
- x_ofs:水平偏移量,即相对于对齐位置的水平偏移量。可以是正值(向右偏移)或负值(向左偏移)。
- y_ofs:垂直偏移量,即相对于对齐位置的垂直偏移量。可以是正值(向下偏移)或负值(向上偏移)
lv_obj_align(label1, NULL, LV_ALIGN_IN_TOP_LEFT, 1, 1);
添加文本
示例:
lv_label_set_text(label1, "This is a test! The label has set long break mode."); // 设置文本内容
如果想后期对文本内容进行增添,可将代码优化成如下所示:
char text_buffer[100];
strcpy(text_buffer, lv_label_get_text(label1));
lv_label_set_text(label1, strcat(text_buffer, "\nis it enough?")); // 设置文本内容
文本样式
- 修改字体大小
- 先在 menuconfig 的 Enable built-in fonts 里面使能你想要的字体,这里我勾选了 14 20 24,其中LVGL 默认的字体是 LV_FONT_MONTSERRAT_14
- 通过相关函数修改字体的大小,由于我的 LVGL 版本问题,所以用的是这个函数,仅作参考
lv_font_t *new_font = &lv_font_montserrat_20;
_lv_style_list_set_local_ptr(&label1->style_list, LV_STYLE_TEXT_FONT, new_font);
- 修改字体颜色
static lv_style_t label1_style;
lv_style_init(&label1_style);
_lv_style_set_color(&label1_style, LV_STYLE_TEXT_COLOR, LV_COLOR_MAKE(255, 255, 0)); // 蓝 绿 红 顺序
lv_obj_add_style(label1, LV_OBJ_PART_MAIN, &label1_style);