找回密码
 立即注册
首页 业界区 科技 LVGL-标签

LVGL-标签

表弊捞 2025-6-15 20:10:17
lv_label_create

用于创建一个标签
  1. lv_obj_t *lv_label_create(lv_obj_t *parent)
  2. //parent:父对象的指针
  3. //ret:创建的标签的句柄
复制代码
lv_label_set_text

设置标签(lv_label)文本内容
  1. void lv_label_set_text(lv_obj_t * label, const char * text);
  2. //label:指向标签对象的指针
  3. //text:要设置的文本内容。可以是普通的 C 字符串(以 \0 结尾),也可以是包含特殊字符(如换行符 \n)的字符串。
  4. //notice:文本长度超过了标签的显示范围,标签的显示行为取决于其长文本模式
  5. /*
  6. LV_LABEL_LONG_DOT:文本会被截断,并在末尾显示省略号(...)。
  7. LV_LABEL_LONG_SCROLL:文本会自动滚动显示。
  8. LV_LABEL_LONG_EXPAND:标签会自动扩展以适应文本长度。
  9. LV_LABEL_LONG_BREAK:文本会在单词边界处换行
  10. 默认情况下,标签的长文本模式是 LV_LABEL_LONG_DOT
  11. */
复制代码
lv_label_set_text_fmt

用于设置标签文本的格式化函数,类似于 C 语言中的 sprintf 函数。它允许通过格式化字符串和参数列表来动态生成标签的文本内容
  1. void lv_label_set_text_fmt(lv_obj_t * label, const char * fmt, ...);
  2. //label:指向标签对象的指针
  3. //fmt:格式化字符串,支持常见的格式化占位符(如 %d、%s、%f 等)
复制代码
lv_label_set_text_static

设置标签(lv_label)文本内容的函数
  1. void lv_label_set_text_static(lv_obj_t * label, const char * text);
  2. //label:指向标签对象的指针
  3. //text:要设置的文本内容。这个字符串必须是静态分配的(例如全局变量或常量字符串),因为标签组件会直接引用这个字符串,而不是复制它的内容。
复制代码
lv_label_set_long_mode

用于设置标签(lv_label)长文本显示模式的函数。当标签的宽度或高度不足以容纳文本时,可以通过此函数指定如何处理超出部分的文本。
  1. void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t mode);
  2. //label:指向标签对象的指针
  3. //mode:长文本模式
  4. /*
  5. LV_LABEL_LONG_WRAP:自动换行。如果标签的高度为 LV_SIZE_CONTENT,则标签的高度会自动扩展以容纳文本。
  6. LV_LABEL_LONG_DOT:在标签右下角显示省略号(...),替换最后 3 个字符。
  7. LV_LABEL_LONG_SCROLL:文本会水平或垂直滚动,具体取决于文本超出的方向。
  8. LV_LABEL_LONG_SCROLL_CIRCULAR:文本会循环滚动,水平或垂直方向取决于超出方向。
  9. LV_LABEL_LONG_CLIP:直接裁剪超出标签范围的文本
  10. */
复制代码
lv_label_set_recolor

用于启用标签(lv_label)部分文本着色功能
  1. void lv_label_set_recolor(lv_obj_t * label, bool en);
  2. //label:指向标签对象的指针
  3. //en:布尔值,用于启用(true)或禁用(false)部分文本着色功能
  4. //notice:颜色代码和文本之间必须有一个空格,例如 #ff0000 Text#
复制代码
  1. lv_obj_t * label = lv_label_create(lv_scr_act(), NULL);
  2. lv_label_set_recolor(label, true);  // 启用部分文本着色功能
  3. lv_label_set_text(label, "This is a #ff0000 red# word and this is #00ff00 green#.");
复制代码
lv_label_set_text_sel_start

设置标签(label)控件文本选中区域起始索引的函数。它通常与 lv_label_set_text_sel_end 配合使用,在支持文本选择的控件(如文本框 lv_textarea)内部实现文本高亮选区功能。
  1. void lv_label_set_text_sel_start(lv_obj_t * label, uint32_t index);
  2. //label:指向标签对象的指针
  3. //index:文本选中起始位置的字符索引(从 0 开始计数)
复制代码
lv_label_set_text_sel_end

用于设置标签对象文本选中结束位置的函数
  1. void lv_label_set_text_sel_end(lv_obj_t * label, uint32_t index);
  2. //label:指向标签对象的指针
  3. //index:文本选中结束位置的字符索引(从 0 开始,注意是结束位置的下一个字符索引,即不包含该索引对应的字符,而是选中到该索引的前一个字符)
复制代码
lv_label_get_text

用于获取标签对象的文本字符串
  1. const char * lv_label_get_text(const lv_obj_t * label);
  2. //label: 指向标签对象的指针
  3. //ret:指向标签文本的常量字符串指针(以null结尾),如果标签不存在文本则返回NULL
复制代码
lv_label_get_long_mode

获取标签对象的“长文本模式”
  1. lv_label_long_mode_t lv_label_get_long_mode(const lv_obj_t * obj);
  2. //obj:标签对象指针
  3. //ret:返回一个 lv_label_long_mode_t 枚举值,表示当前设置的长文本模式
  4. typedef enum {
  5.     LV_LABEL_LONG_WRAP,            // 自动换行(默认)
  6.     LV_LABEL_LONG_DOT,             // 文本末尾显示省略号(...)
  7.     LV_LABEL_LONG_SCROLL,          // 无限滚动
  8.     LV_LABEL_LONG_SCROLL_CIRCULAR, // 循环滚动
  9.     LV_LABEL_LONG_CLIP,            // 直接裁剪,不换行也不滚动(超出部分不可见)
  10. } lv_label_long_mode_t;
复制代码
lv_label_get_recolor

获取标签对象的文本重新着色状态
  1. bool lv_label_get_recolor(const lv_obj_t * obj);
  2. //obj: 指向标签对象的指针
  3. //ret:true: 重新着色功能已启用,false: 重新着色功能已禁用
复制代码
lv_label_get_letter_pos

获取单个字符位置的功能
  1. void lv_label_get_letter_pos(const lv_obj_t * obj, uint32_t char_id, lv_point_t * pos);
  2. //obj:标签对象指针
  3. //char_id:要查询的字符索引(从0开始,注意:对于包含换行的文本,索引是文本整体中的位置,而非某一行内的位置)
  4. //pos:存储坐标的指针(将包含字符左上角的坐标)
复制代码
  1. lv_point_t char_pos;
  2. lv_label_get_letter_pos(label, 4, &char_pos); // 注意索引从0开始,所以第5个字符索引为4
  3. printf("字符5的位置: x=%d, y=%d\n", char_pos.x, char_pos.y);
复制代码
lv_label_get_letter_on

用于确定标签上给定坐标点对应的字符索引
  1. uint32_t lv_label_get_letter_on(const lv_obj_t * obj, lv_point_t * pos_in);
  2. //obj: 标签对象指针
  3. //pos_in: 指向坐标点的指针(坐标相对于标签对象)
  4. ret:该坐标点下的字符索引,如果坐标不在任何字符上则返回 LV_LABEL_TEXT_SEL_OFF(通常定义为 0xFFFF)
复制代码
lv_label_is_char_under_pos

用于检查给定的点是否位于标签的某个字符之上
  1. bool lv_label_is_char_under_pos(const lv_obj_t *obj, lv_point_t *pos)
  2. //obj: 标签对象指针
  3. //pos: 指向坐标点的指针(坐标相对于标签对象)
  4. //ret:点在标签某个字符之上返回true,否则返回false
复制代码
lv_label_get_text_selection_start

用于获取标签文本选中的起始索引
  1. uint32_t lv_label_get_text_selection_start(const lv_obj_t *obj)
  2. //obj: 标签对象指针
  3. //ret:选择的开始索引编号,如果没有选择返回LV_LABEL_TEXT_SELECTION_OFF
复制代码
lv_label_get_text_selection_end

用于获取标签文本选中的结束索引
  1. uint32_t lv_label_get_text_selection_end(const lv_obj_t *obj)
  2. //obj: 标签对象指针
  3. //ret:选择的结束索引编号,如果没有选择返回LV_LABEL_TXT_SEL_OFF
复制代码
lv_label_ins_text

用于向标签中插入文本,这个标签的内容不能是静态的
  1. void lv_label_ins_text(lv_obj_t *obj, uint32_t pos, const char *txt)
  2. //obj: 标签对象指针
  3. //pos:要插入的文本的索引位置,0表示从开头, LV_LABEL_POS_LAST表示在最后
  4. //txt:待插入文本的指针
复制代码
lv_label_cut_text

用于从文本中删除一段内容,这个标签的内容不能是静态的
  1. void lv_label_cut_text(lv_obj_t *obj, uint32_t pos, uint32_t cnt)
  2. //obj: 标签对象指针
  3. //pos:要删除的字符的起始位置的索引
  4. //cnt:要删除的字符的数量
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册