1.介绍
lv_label 标签控件可以说是 littleVGL 中使用最频繁的控件了,他的主要作用就是用来显示文本信息的,你可以在运行时的任何时候,使用lv_label_set_text(label, “New text”)接口来动态修改文本内容,littleVGL 内部会重新为这个标签重新分配堆空间,当然了你也可以通过lv_label_set_static_text(label, char_array)这样的接口来引用一个外部的char_array 文本指针,这样的好处就是 littleVGL 内部不会为这个文本内容分配堆空间,从而可以减少内存的使用,此标签控件支持换行,图标字体,部分文本重绘色等显示功能,同时针对长文本显示,它支持6种显示模式。
2. lv_label 的 API 接口
2.1 主要数据类型
2.1.1 长文本模式数据类型
| enum { |
| LV_LABEL_LONG_EXPAND, |
| |
| |
| LV_LABEL_LONG_BREAK, |
| |
| |
| LV_LABEL_LONG_DOT, |
| |
| LV_LABEL_LONG_SROLL, |
| |
| LV_LABEL_LONG_SROLL_CIRC, |
| LV_LABEL_LONG_CROP, |
| }; |
| typedef uint8_t lv_label_long_mode_t; |
| |
2.1.2 文本内容对齐数据类型
| enum { |
| LV_LABEL_ALIGN_LEFT, |
| LV_LABEL_ALIGN_CENTER, |
| LV_LABEL_ALIGN_RIGHT, |
| }; |
| typedef uint8_t lv_label_align_t; |
| |
2.1.3 标签样式数据类型
| enum { |
| LV_LABEL_STYLE_MAIN, |
| }; |
| typedef uint8_t lv_label_style_t; |
| |
2.2 API 接口
2.2.1 创建标签
| lv_obj_t * lv_label_create(lv_obj_t * par, const lv_obj_t * copy); |
| |
参数:
parent: 指向父对象
copy: 此参数可选,表示创建新对象时,把 copy 对象上的属性值复制过来
返回值:
返回新创建出来的标签对象,如果为 NULL 的话,说明堆空间不足了
2.2.2 设置动态文本(字符串形式)
| void lv_label_set_text(lv_obj_t * label, const char * text); |
参数:
label: 标签对象
text: 新的文本内容,文本内容要是’\0’空字符结尾,如果传 NULL 的话,那么代表刷新当前文本内容
2.2.3 设置动态文本(数组形式)
| void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size); |
| |
参数:
label: 标签对象
array: 新的文本内容,不需要是’\0’空字符结尾,如果传 NULL 的话,那么代表刷新当前文本内容
size: 传入的 array 数组的大小,单位为字节
2.2.4 设置静态文本(字符串形式)
| void lv_label_set_static_text(lv_obj_t * label, const char * text); |
| |
参数:
label: 标签对象
text: 新的文本内容,文本内容要是’\0’空字符结尾,如果传 NULL 的话,那么代表刷新当前文本内容
2.2.5 设置长文本模式
| void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode); |
参数:
label: 标签对象
long_mode: 长文本模式
如果不设置的话 , 那么标签对象的长文本模式默认为LV_LABEL_LONG_EXPAND
此处需要注意:lv_label_set_long_mode 的调用必须放在lv_obj_set_size 调用的前面,否则设置的宽和高是无效的,下面看个例子:
正确的方式:
| lv_label_set_long_mode(label1,LV_LABEL_LONG_BREAK); |
| lv_obj_set_size(label1,100,0); |
| lv_label_set_text(label1,"Hello CSDN"); |
| |
错误的方式:
| lv_obj_set_size(label1,100,0); |
| lv_label_set_long_mode(label1,LV_LABEL_LONG_BREAK); |
| lv_label_set_text(label1,"Hello CSDN"); |
| |
2.2.6 设置文本对齐方式
| void lv_label_set_align(lv_obj_t * label, lv_label_align_t align); |
| |
参数:
label: 标签对象
align: 水平方向上的文本对齐方式
记住,要想让标签的文本内容具有对齐的效果,那么必须得先保证标签对象具有指定的宽度,请看下面例子:
| lv_obj_t *src = lv_scr_act(); |
| lv_obj_t *label1 = lv_label_create(src,NULL); |
| lv_label_set_long_mode(label1,LV_LABEL_LONG_CROP); |
| |
| lv_obj_set_pos(label1,20,20); |
| lv_obj_set_size(label1,100,50); |
| lv_label_set_text(label1,"Hello CSDN"); |
| lv_label_set_style(label1,LV_LABEL_STYLE_MAIN,&lv_style_plain_color); |
| lv_label_set_body_draw(label1,true); |
| lv_label_set_align(label1,LV_LABEL_ALIGN_CENTER); |
| |
2.2.7 是否使能文本重绘色功能
| void lv_label_set_recolor(lv_obj_t * label, bool en); |
| |
参数:
label: 标签对象
en: 是否使能
使能之后,可以让标签的部分文本显示出不同的颜色,即一个标签里可以含有多种不同颜色的文本,这在其他的 GUI 库中,一般是办不到的,使用格式为: #十六进制颜色值 文本# ,注意了颜色值和文本之间至少得有一个空格,请看下面例子(只给出关键代码):
| lv_label_set_recolor(label1,true); |
| lv_label_set_text(label1,"#ff0000 red#,#00ff00 green#,#0000ff blue#"); |
| |
还有一些比较简单的 API 接口,我这里就不列出来了,通过看函数名就能知道大概啥意思了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-09-01 MFC使用控制台
2020-09-01 将CString输出到控制台的方法
2020-09-01 cstring与char*互转