目录
1. 显示字符串
1.1 lv_label_set_text
1.2 lv_label_set_text_fmt
1.3 lv_label_set_text_static
2. 设置长字符串模式
3. 改变颜色
3.1 改变背景颜色和对比度
3.2 设置字符串颜色
3.2.1 设置Style的字符串颜色
3.2.2 设置对象的字符串颜色
3.2.3 局部改色
显示字符串是通过对象Label实现的。Label的Parts只有LV_LABEL_PART_MAIN。标签通过lv_label_create创建。
lv_obj_t * lv_label_create(lv_obj_t * parent)
1. 显示字符串
1.1 lv_label_set_text
void lv_label_set_text(lv_obj_t * obj, const char * text)
当参数text == NULL时,显示默认的字符串。
1.2 lv_label_set_text_fmt
格式化显示字符串,功能类似printf。例如
lv_label_set_text_fmt(label1, "Hello World!%d", 12);
1.3 lv_label_set_text_static
和lv_label_set_text类似,区别是lv_label_set_text的text参数会分配在动态内存中,而lv_label_set_text_static的text参数是直接使用给定的缓冲区。
2. 设置长字符串模式
当字符串长度超过Label长度,LVGL提供5种显示模式。
enum {
LV_LABEL_LONG_WRAP, /**< Keep the object width, wrap the too long lines and expand the object height*/
LV_LABEL_LONG_DOT, /**< Keep the size and write dots at the end if the text is too long*/
LV_LABEL_LONG_SCROLL, /**< Keep the size and roll the text back and forth*/
LV_LABEL_LONG_SCROLL_CIRCULAR, /**< Keep the size and roll the text circularly*/
LV_LABEL_LONG_CLIP, /**< Keep the size and clip the text out of it*/
};
typedef uint8_t lv_label_long_mode_t;
void lv_label_set_long_mode(lv_obj_t * obj, lv_label_long_mode_t long_mode)
调用这个函数必须是设置Size之前。
lv_label_set_long_mode(label1, LV_LABEL_LONG_DOT);
lv_obj_set_size(label1, LV_PCT(100), LV_PCT(20));
LV_LABEL_LONG_WRAP - 换行,默认的模式。
LV_LABEL_LONG_DOT - 将最后3个字符替换为点。 注意当Label高度可以放下整个字符串时,字符串会先换行。
LV_LABEL_LONG_SCROLL - 水平或垂直来回滚动模式,水平方向优先级更高。
LV_LABEL_LONG_SCROLL_CIRCULAR - 水平或垂直循环滚动模式,水平方向优先级更高。
LV_LABEL_LONG_CLIP - 截断模式
3. 改变颜色
3.1 改变背景颜色和对比度
通过Style设置,默认对比度是0,即完全透明。
void lv_obj_set_style_bg_opa(struct _lv_obj_t * obj, lv_opa_t value, lv_style_selector_t selector)
将对比度改为128
lv_obj_set_style_bg_opa(label1, 128, 0);
默认的背景颜色是白色,即0xFFFFFF。
void lv_obj_set_style_bg_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector)
将背景颜色改为红色0xFF0000。
lv_obj_set_style_bg_color(label1, lv_color_hex(0xFF0000), 0);
3.2 设置字符串颜色
3.2.1 设置Style的字符串颜色
void lv_style_set_text_color(lv_style_t * style, lv_color_t value)
3.2.2 设置对象的字符串颜色
void lv_obj_set_style_text_color(struct _lv_obj_t * obj, lv_color_t value, lv_style_selector_t selector)
将颜色改为红色
lv_obj_set_style_text_color(label1, lv_color_hex(0xFF0000), 0);
3.2.3 局部改色
首先要通过API函数lv_label_set_recolor使能局部改色功能。
lv_label_set_recolor(label1, true)
字符串中加入关键字‘#’设定颜色,语法:
#颜色 字符串#
其中颜色和字符串之间有个空格。
例如将字符串“It is a long string!”中的“It”显示为红色,其他为默认色。
lv_label_set_recolor(label1, true);
lv_label_set_text(label1, "#FF0000 It# is a long string!");