-
创建标签
/*--------------------------------------------------------------------------------
parent:指向父对象
copy:表示创建新对象时,把copy对象上的属性值复制过来
返回值:创建成功则返回新创建的标签对象,失败返回NULL
返回值类似FreeRTOS中的任务句柄,后续对于此标签的所有操作都有基于这个
--------------------------------------------------------------------------------*/
lv_obj_t * lv_label_create(lv_obj_t * parent, const lv_obj_t * copy);
-
设置标签显示的文本
-
动态文本(动态的分配内存来存储文本内容)
-
// label:标签对象(创建标签时的返回值)
// text:新的文本内容,文本内容以\0结尾,如果传入NULL表示刷新当前文本(字符串)
void lv_label_set_text(lv_obj_t * label, const char * text);//设置动态文本--字符串形式
-
// label:标签对象(创建标签时的返回值)
// array:新的文本内容,不需要\0结尾,如果传入NULL表示刷新当前文本(数组名)
// size:传入的数组大小,单位是字节
void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size);//设置动态文本--数组形式
设置动态文本有字符串形式和数组形式,其实就是文本信息传入形式不同,一个是字符串形式,一个是数组形式。
-
静态文本(节省内存)
-
// label:标签对象
// text:新的文本内容,’\0’空字符结尾,如果传NULL的话,那么代表刷新当前文本内容
void lv_label_set_static_text(lv_obj_t * label, const char * text);
-
// label:标签对象(创建标签时的返回值)
// array:新的文本内容,不需要\0结尾,如果传入NULL表示刷新当前文本(数组名)
// size:传入的数组大小,单位是字节
void lv_label_set_array_text(lv_obj_t * label, const char * array, uint16_t size);
设置静态文本,标签控件内不会申请内存来存放文本,所以比较节省内存,但是外部传入的文本内容不能删除或随意更改。(目前所说的文本都是指英文或者是符号,中文显示需要单独添加字库)
-
设置长文本模式
/*-------------------------------------------------------------------------------
label:标签对象
long_mode:长文本模式(6种)
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,
--------------------------------------------------------------------------------*/
void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode);
此函数调用位置需要特别注意:必须放在 lv_obj_set_size 调用的前面,否则设置的宽和高是无
效的,先设置长文本模式,在设置标签大小。
不使用此函数时,系统默认是LV_LABEL_LONG_EXPAND模式,自动根据文本长度增加标签宽度,可以在文本中加入\n来换行
-
设置文本对齐方式
/*-------------------------------------------------------------------------------
label:标签对象
align:对齐方式(3种)
--------------------------------------------------------------------------------*/
void lv_label_set_align(lv_obj_t * label, lv_label_align_t align);
-
是否使能文本重绘色功能
/*-------------------------------------------------------------------------------
label: 标签对象
en: 是否使能
--------------------------------------------------------------------------------*/
void lv_label_set_recolor(lv_obj_t * label, bool en);
使能后,可以对标签的部分文本进行颜色配置,一个标签中文本显示出不同颜色。
使用格式为: #十六进制颜色值 文本# ,注意了颜色值和文本之间至少得有一个空格。
lv_label_set_recolor(label1,true);//先得使能文本重绘色功能
lv_label_set_text(label1,"#ff0000 red#,#00ff00 green#,#0000ff blue#");//使用了 3 次重绘色
-
是否使能背景重绘制功能
/*-------------------------------------------------------------------------------
label: 标签对象
en: 是否使能
--------------------------------------------------------------------------------*/
void lv_label_set_body_draw(lv_obj_t * label, bool en);
lv_label_set_style(label1,LV_LABEL_STYLE_MAIN,&lv_style_plain_color);//设置主背景的样
式为lv_style_plain_color
默认情况下,lv_label 标签对象是没有背景的,即透明的,但是我们可以通过这个接口和样式使标签对象具有背景。
-
设置动画速度
/*-------------------------------------------------------------------------------
label: 标签对象
anim_speed: 动画速度,单位为 px/sec(一秒多少个像素)
--------------------------------------------------------------------------------*/
void lv_label_set_anim_speed(lv_obj_t * label, uint16_t anim_speed);
当标签文本设置滚动时(LV_LABEL_LONG_SROLL/SCROLL_CIRC 模式下),可以通过这个函数设置滚动速度,不进行设置时有一个默认速度。
-
设置样式
/*-------------------------------------------------------------------------------
label: 标签对象
type: 哪一个部件的样式,目前就 LV_LABEL_STYLE_MAIN 主背景部件这一个可选值
style: 样式
--------------------------------------------------------------------------------*/
static inline void lv_label_set_style(lv_obj_t * label, lv_label_style_t type, const lv_style_t *style)
-
插入文本
/*-------------------------------------------------------------------------------
label: 标签对象
pos: 插入的位置,0 代表从最前面插入, LV_LABEL_POS_LAST 代表从最后面插入
txt: 要插入的文本
--------------------------------------------------------------------------------*/
void lv_label_ins_text(lv_obj_t * label, uint32_t pos, const char * txt);
使用此函数,文本必须是动态设置的,不能是静态文本,插入位置代表字符位置,例如 1 表示在第一个字符后面插入。
-
剪切文本
/*-------------------------------------------------------------------------------
label: 标签对象
pos: 剪切的起始位置,从 0 开始
cnt: 要剪切的字符数量
--------------------------------------------------------------------------------*/
void lv_label_cut_text(lv_obj_t * label, uint32_t pos, uint32_t cnt);
剪切文本亦可以理解为删除文本,可以删除指定区域指定长度的文本,当然也必须是动态文本才可以使用此函数。