基本使用

  1. // 创建label(有一个默认的文本Text)
  2. lv_obj_t * label = lv_label_create(lv_scr_act(), NULL);
  3. // 通用属性
  4. // 设置位置
  5. lv_obj_set_pos(label, 50, 50);
  6. // 设置大小
  7. lv_obj_set_size(label, 100, 100);
  8. // 设置可以点击
  9. lv_obj_set_click(label, true);
  10. // 设置可以拖拽
  11. lv_obj_set_drag(label, true);
  12. // 设置动态文本
  13. lv_label_set_text(label, "helllo world");
  14. // 设置静态文本
  15. // lv_label_set_static_text(label, "helllo static");
  16. // 设置长文本模式
  17. lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK);
  18. // 设置对齐方式
  19. lv_label_set_align(label, LV_LABEL_ALIGN_RIGHT);

set_text几种方式

  • lv_label_set_static_text

    这是以”静态”的方式设置文本内容,所谓的静态就是标签对象内部不会为这个文本内容 分配内存空间来保存它,而只是引用了一下这个文本指针,好处就是在某些场合下,可以节省内存,坏处就是外部的 text 内容空间不能随意的被释放,否则会引起标签对象的显示出错

  • lv_label_set_text

    用此 API 接口来设置文本时,它会把之前文本所占用的内存空间先给释放掉,然后为这个新文 内容重新分配一个相应大小的内存空间,所以即使外面的 text 指针被释放了,也不会影响此标签控件的显示

长文本模式

enum {
    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,     //保持对象大小不变,超过的文本内容将会被剪切掉
};
typedef uint8_t lv_label_long_mode_t;
  • lv_label_set_long_mode必须在lv_obj_set_size之前调用,否则无效
     // 设置长文本模式
      lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK);
      lv_obj_set_size(label, 700, 200);
    

    对齐方式

    enum {
      LV_LABEL_ALIGN_LEFT,    //文本左对齐
      LV_LABEL_ALIGN_CENTER,  //文本居中对齐
      LV_LABEL_ALIGN_RIGHT,   //文本右对齐
    };
    typedef uint8_t lv_label_align_t;