LVGL9.5 设置 label 长文本自动换行

说明

  • 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);
相关推荐
xzl041 天前
LVGL 启动流程全解析:RT-Thread 下的界面渲染链路
rt-thread·lvgl
xzl041 天前
LVGL Coffee UI 接入实战:问题解决全记录
ui·rt-thread·lvgl
Freak嵌入式18 天前
MicroPython LVGL基础知识和概念:GUI 的扩展接口
ide·驱动开发·嵌入式·gui·lvgl·micropython·upypi
Freak嵌入式18 天前
MicroPython LVGL基础知识和概念:底层渲染与性能优化
人工智能·python·单片机·性能优化·嵌入式·lvgl·micropython
Freak嵌入式20 天前
MicroPython LVGL基础知识和概念:显示与多屏管理
开发语言·python·github·php·gui·lvgl·micropython
Freak嵌入式20 天前
MicroPython LVGL基础知识和概念:时序与动态效果
开发语言·python·github·php·gui·lvgl·micropython
Freak嵌入式20 天前
MicroPython LVGL基础知识和概念:交互与事件处理
ide·嵌入式·gui·lvgl·micropython·电子·upypi
Freak嵌入式21 天前
LVGL基础知识和概念:视觉样式与资源系统
ide·驱动开发·嵌入式·lvgl·micropython·upypi
禅口魔心22 天前
KelpBar 智慧屏项目学习 —— 简单的修改
lvgl·嵌入式开发·kelpbar
养一回月亮!1 个月前
STM32F407VET6驱动1.8寸TFT LCD移植LVGL,实现矩阵按键控制UI
stm32·单片机·lvgl