标签部件(Iv label)
在LVGL中,标签部件主要用于文本显示,例如标题、提示信息等 。
①如何创建标签部件以及设置文本?
如何创建标签部件以及设置文本?
知识点1:创建标签部件 Iv_objt *label Iv_label_create (parent);
知识点2:设置文本的3种方式
①直接设置文本,存储文本的内存动态分配:Iv_label._set_text(label,"hallo \n Ivg");
②文本不存储在动态内存,而是在指定的缓冲区中(慎用): Iv_label_set_text_static(label,"hallo");
③格式化显示文本,类似printf:Iv_label_set_text_fmt(label,“Vaue:%d”,50);
②如何改变文本的样式?
lv_obj_set_style_bg_color(label, lv_color_hex(0xff0000), LV_STATE_DEFAULT); //设置标签背景颜色
lv_obj_set_style_bg_opa(label, 200, LV_STATE_DEFAULT); //设置背景透明度,不然没有效果
lv_obj_set_style_text_font(label, &lv_font_montserrat_30, LV_STATE_DEFAULT); //设置字体,要把字体宏打开不然会报错
lv_obj_set_style_text_color(label, lv_color_hex(0x25b65b), LV_STATE_DEFAULT); //设置字体颜色
单独设置一些字体颜色:
lv_label_set_recolor(label, true); //开启重新着色功能
lv_label_set_text(label, "this is fmt text val=#ff4236 50,end string#"); // #(颜色十六进制val) (单独着色字符) #
③当文本长度超过部件大小的时候怎么显示?
默认情况下,如果没有限定标签部件大小,那它的大小自动扩展为文本大小。
也可以设置为长文本模式:lv_label_set_long_mode(label, LV_LABEL_LONG_...);
enum {LV_LABEL_LONG_WRAP, /* 默认模式, 如果部件大小已固定,超出的文本将被剪切 */LV_LABEL_LONG_DOT, /* 将 label 右下角的最后 3 个字符替换为点… */LV_LABEL_LONG_SCROLL, /* 来回滚动 */LV_LABEL_LONG_SCROLL_CIRCULAR, /* 循环滚动 */LV_LABEL_LONG_CLIP, /* 直接剪切掉部件外面的文本部分 */
};
void my_gui_demo(void)
{lv_obj_t* label = lv_label_create(lv_scr_act()); //创建标签//lv_label_set_text(label, "hallo lvgl"); //1.直接设置文本,存储文本的内容动态分配//lv_label_set_text_static(label, "Static: my text"); //2.在静态内存分配lv_label_set_text_fmt(label, "this is fmt text val=%d,%s", 50, "end string"); //类似于 sprintflv_obj_set_size(label, 80, 30);lv_obj_set_style_bg_color(label, lv_color_hex(0xff0000), LV_STATE_DEFAULT);lv_obj_set_style_bg_opa(label, 200, LV_STATE_DEFAULT); //设置背景透明度,不然没有效果lv_obj_set_style_text_font(label, &lv_font_montserrat_30, LV_STATE_DEFAULT); //设置字体,要把字体宏打开不然会报错 lv_obj_set_style_text_color(label, lv_color_hex(0x25b65b), LV_STATE_DEFAULT); //设置字体颜色lv_label_set_recolor(label, true); //开启重新着色功能lv_label_set_text(label, "this is fmt text val=#ff4236 50,end string#"); // #(颜色十六进制val) (单独着色字符) # lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR); //来回滚动
}
下面是一些要注意的点:
1.设置背景颜色一定要设置背景透明度,否则默认背景透明度为0,一点背景颜色都无。
2.如果使用静态内存分配显示文本,那么在后面的长文本模式使用LV_LABEL_LONG_DOT(右下角最后三个字符替换成 ...),由于是静态分配的,在函数外部再次修改就已经失效了会导致程序崩溃。
3.设置标签字体颜色一定要打开对应宏,不然也会报错