目录一、前言二、标签控件基础组成三、标签的核心操作四、文本超长处理模式五、文本选择与超长文本处理六、自定义滚动与图标显示七、标签事件与文本色彩八、实战代码示例九、实时刷新标签内容十、工程添加补充十一、总结十二、结尾一、前言我是Hello_Embed在上一篇笔记中我们学习了 LVGL 定时器的使用掌握了定时任务、动态刷新的核心方法。而在嵌入式 GUI 开发中文本显示是最基础、最常用的功能LVGL 的标签控件lv_label就是专门用于展示文字、图标的核心控件。本篇将全面讲解标签控件的组成结构、文本设置、超长处理、图标显示、实时刷新等全功能用法帮你熟练掌握这个 LVGL 最基础的显示控件。二、标签控件基础组成标签是用来显示文本的控件。在盒子模型中标签由以下部分组成LV_PART_MAIN矩形部分盒子区域填充值可用于在文本和背景之间添加空间。LV_PART_SCROLLBAR当展示文本大于部件大小时显示的滚动条部分。LV_PART_SELECTED选中文本时突出显示的部分仅支持text_color和bg_color样式属性。创建标签lv_obj_t*labellv_label_create(parent);三、标签的核心操作 a id“label-func”)创建标签部件后可设置显示文本未设置时默认显示text。文本设置方式直接设置文本lv_label_set_text(label, New text);格式化文本lv_label_set_text_fmt(label, %s: %d, Value, 15);静态文本不动态分配内存lv_label_set_text_static(label, New text);文本换行使用\n即可实现换行lv_label_set_text(label, line1\nline2\n\nline4 );改变字体大小改变字号即切换字体类型不同字号对应独立字体需消耗对应资源设置方式lv_obj_set_style_text_font();lv_style_set_text_font();四、文本超长处理模式默认文本宽高与标签一致若文本尺寸小于标签可通过以下模式调整LV_LABEL_LONG_WRAP自动换行高度自适应默认LV_LABEL_LONG_DOT文本过长时末尾显示省略号LV_LABEL_LONG_SCROLL文本超长时来回滚动LV_LABEL_LONG_SCROLL_CIRCULAR文本超长时循环滚动LV_LABEL_LONG_CLIP直接裁剪超出部分的文本设置模式lv_label_set_long_mode(label,LV_LABEL_LONG_...);补充LV_LABEL_LONG_DOT会直接操作文本缓冲区lv_label_set_text_static传入的缓冲区必须可写lv_label_set_text会内部复制文本无闪退风险。五、文本选择与超长文本处理文本选择在lv_conf.h中开启LV_LABEL_TEXT_SELECTION即可使用文本选择功能手动指定选中范围lv_label_get_text_selection_start(label,start_char_index);lv_label_get_text_selection_start(label,end_char_index);超长文本处理文本长度超过 40k 字符时在lv_conf.h中开启LV_LABEL_LONG_TXT_HINT可高效处理超长文本。六、自定义滚动与图标显示自定义滚动动画滚动模式LV_LABEL_LONG_SCROLL/CIRCULAR下通过样式设置动画属性lv_style_set_anim();显示 LVGL 内置图标字体LVGL 内置图标字体可通过标签直接显示支持单独显示、组合显示![[Pasted image 20260315163349.png]]lv_label_set_text(my_label,LV_SYMBOL_OK);// 单独显示图标lv_label_set_text(my_label,LV_SYMBOL_OKApply);// 图标文本lv_label_set_text(my_label,LV_SYMBOL_OK LV_SYMBOL_WIFI);// 多图标七、标签事件与文本色彩点击事件标签默认不接收输入事件开启可点击标记lv_obj_add_flag(label,LV_OBJ_FLAG_CLICKABLE);文本色彩设置/* RGB颜色设置 */lv_color_tclv_color_make(red,green,blue);lv_color_tcLV_COLOR_MAKE(red,green,blue);/* 十六进制颜色 */lv_color_tclv_color_hex(0x123456);lv_color_tclv_color_hex3(0x123);八、实战代码示例voidlesson_3_1_1(void){//char * label_str 100askkkkkk11111111222222222;//static char label_str[] www.100ask.net\n100ask\n100ask\n100ask;lv_obj_t*labellv_label_create(lv_screen_active());//lv_obj_set_size(label, LV_SIZE_CONTENT, LV_SIZE_CONTENT);//lv_obj_set_size(label, 20, LV_SIZE_CONTENT);//lv_obj_set_style_bg_opa(label, LV_OPA_COVER, 0);//lv_obj_set_style_bg_color(label, lv_color_hex(0x9fce43), 0);//lv_label_set_long_mode(label, LV_LABEL_LONG_DOT);//lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE);//lv_obj_add_event_cb(label, my_event_cb, LV_EVENT_CLICKED, label);//lv_label_set_text(label, label_str);//lv_label_set_text(label, 100askkkkkk11111111222222222);// lv_label_set_text(label, 100askkkkkkLV_SYMBOL_WIFI LV_SYMBOL_BACKSPACE LV_SYMBOL_BATTERY_FULL);//lv_obj_set_style_text_font(label, lv_font_montserrat_40, 0);//lv_obj_set_style_text_font(label, lv_font_simsun_16_cjk, 0);//lv_obj_set_style_text_font(label, lv_font_source_han_sans_bold_28, 0);//lv_obj_set_style_text_color(label, lv_color_hex(0xf1645a), 0);//lv_label_set_text_fmt(label, %s%d%s%s, www., 100, ask, .net);//lv_label_set_text_static(label, label_str);//lv_label_set_text_selection_start(label, 4);//lv_label_set_text_selection_end(label, 10);//lv_obj_set_style_text_color(label, lv_color_hex(0xe84134), LV_PART_SELECTED);//lv_obj_set_style_bg_color(label, lv_color_hex(0xf5f5f5), LV_PART_SELECTED);//lv_obj_set_style_text_align(label, LV_TEXT_ALIGN_LEFT, 0);//lv_timer_t * timer1;/* 创建第一个timer *///timer1 lv_timer_create(my_timer1, 100, label);}九、实时刷新标签内容温湿度等动态数据需实时刷新结合定时器实现staticvoidmy_timer1(lv_timer_t*timer){lv_obj_t*label(lv_obj_t*)lv_timer_get_user_data(timer);//lv_label_set_text(label, 80, 90%);lv_label_set_text_fmt(label,%d, %d%%,lv_rand(20,30),lv_rand(70,80));//LV_LOG_USER(my_timer1 user_data: %d, idle: %d, *user_data, idle);}十、工程添加补充补充添加自定义工程步骤新建文件夹参考路径part1\02_codes\lv_sim_codeblocks_win\lv_100ask_lesson_demos\src创建对应的.c与.h文件在lv_100ask_lesson_demos_conf_template.h创建对应宏并设为 1在lv_100ask_lesson_demos.h内添加头文件将文件夹添加进 CodeBlocks 编译即可十一、总结lv_label是 LVGL 核心文本控件支持多部件样式与多种文本设置方式内置 5 种文本超长处理模式适配不同显示场景支持图标显示、文本选择、点击事件功能全面结合定时器可实现文本实时刷新满足动态数据展示需求。十二、结尾标签控件是 LVGL 界面开发的基础组件掌握文本设置、样式修改、动态刷新等用法就能完成绝大多数文本展示需求。我是Hello_Embed持续分享 LVGL 控件实战技巧期待你的关注