LVGL学习笔记9 - 标签Label

31 篇文章 91 订阅

目录

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!");

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值