本文使用的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);
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐