LVGL标签学习,正点原子

标签部件(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");  //类似于 sprintf
    lv_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.设置标签字体颜色一定要打开对应宏,不然也会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值