说明
-
LVGL 9.5 版本(当前最新)
-
label 作为文本显示,可能内容会很长,需要设置 label 文本过长后自动换行的功能
-
设置
lv_label_set_long_mode(label, LV_LABEL_LONG_MODE_WRAP);后,发现 label 文本没有自动换行,有了滚动条,如下

自动换行
-
解决方法:还需要设置 label 的宽度 width
-
比如
lv_obj_set_width(label, 500);
示例如下
c
/**
* Load a font with FreeType
*/
void lv_example_freetype_1(void)
{
/*Create a font*/
lv_font_t * font = lv_freetype_font_create(/* "D:../lvgl/examples/libs/freetype/Lato-Regular.ttf", */
"D:../apps/fonts/HYQIHEI-55J.ttf",
LV_FREETYPE_FONT_RENDER_MODE_BITMAP,
24,
LV_FREETYPE_FONT_STYLE_NORMAL);
if(!font) {
LV_LOG_ERROR("freetype font create failed.");
return;
}
/*Create style with the new font*/
static lv_style_t style;
lv_style_init(&style);
lv_style_set_text_font(&style, font);
lv_style_set_text_align(&style, LV_TEXT_ALIGN_CENTER);
/*Create a label with the new style*/
lv_obj_t * label = lv_label_create(lv_screen_active());
lv_obj_add_style(label, &style, 0);
lv_label_set_text(label, "大家好!!Hello world!I'm a font created with FreeType!"
"lv_log_register_print_cb 可以设置 LVGL 的打印回调函数!");
lv_label_set_long_mode(label, LV_LABEL_LONG_MODE_WRAP);
lv_obj_set_width(label, 500);
lv_obj_center(label);
}
显示效果

小结
- 先设置好 label 的宽度 width,再设置自动换行(
LV_LABEL_LONG_MODE_WRAP)即可
c
lv_label_set_long_mode(label, LV_LABEL_LONG_MODE_WRAP);
lv_obj_set_width(label, 500);