LVGL-标签
lv_label_create用于创建一个标签
lv_obj_t *lv_label_create(lv_obj_t *parent)
//parent:父对象的指针
//ret:创建的标签的句柄lv_label_set_text
设置标签(lv_label)文本内容
void lv_label_set_text(lv_obj_t * label, const char * text);
//label:指向标签对象的指针
//text:要设置的文本内容。可以是普通的 C 字符串(以 \0 结尾),也可以是包含特殊字符(如换行符 \n)的字符串。
//notice:文本长度超过了标签的显示范围,标签的显示行为取决于其长文本模式
/*
LV_LABEL_LONG_DOT:文本会被截断,并在末尾显示省略号(...)。
LV_LABEL_LONG_SCROLL:文本会自动滚动显示。
LV_LABEL_LONG_EXPAND:标签会自动扩展以适应文本长度。
LV_LABEL_LONG_BREAK:文本会在单词边界处换行
默认情况下,标签的长文本模式是 LV_LABEL_LONG_DOT
*/lv_label_set_text_fmt
用于设置标签文本的格式化函数,类似于 C 语言中的 sprintf 函数。它允许通过格式化字符串和参数列表来动态生成标签的文本内容
void lv_label_set_text_fmt(lv_obj_t * label, const char * fmt, ...);
//label:指向标签对象的指针
//fmt:格式化字符串,支持常见的格式化占位符(如 %d、%s、%f 等)lv_label_set_text_static
设置标签(lv_label)文本内容的函数
void lv_label_set_text_static(lv_obj_t * label, const char * text);
//label:指向标签对象的指针
//text:要设置的文本内容。这个字符串必须是静态分配的(例如全局变量或常量字符串),因为标签组件会直接引用这个字符串,而不是复制它的内容。lv_label_set_long_mode
用于设置标签(lv_label)长文本显示模式的函数。当标签的宽度或高度不足以容纳文本时,可以通过此函数指定如何处理超出部分的文本。
void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t mode);
//label:指向标签对象的指针
//mode:长文本模式
/*
LV_LABEL_LONG_WRAP:自动换行。如果标签的高度为 LV_SIZE_CONTENT,则标签的高度会自动扩展以容纳文本。
LV_LABEL_LONG_DOT:在标签右下角显示省略号(...),替换最后 3 个字符。
LV_LABEL_LONG_SCROLL:文本会水平或垂直滚动,具体取决于文本超出的方向。
LV_LABEL_LONG_SCROLL_CIRCULAR:文本会循环滚动,水平或垂直方向取决于超出方向。
LV_LABEL_LONG_CLIP:直接裁剪超出标签范围的文本
*/lv_label_set_recolor
用于启用标签(lv_label)部分文本着色功能
void lv_label_set_recolor(lv_obj_t * label, bool en);
//label:指向标签对象的指针
//en:布尔值,用于启用(true)或禁用(false)部分文本着色功能
//notice:颜色代码和文本之间必须有一个空格,例如 #ff0000 Text#lv_obj_t * label = lv_label_create(lv_scr_act(), NULL);
lv_label_set_recolor(label, true);// 启用部分文本着色功能
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)内部实现文本高亮选区功能。
void lv_label_set_text_sel_start(lv_obj_t * label, uint32_t index);
//label:指向标签对象的指针
//index:文本选中起始位置的字符索引(从 0 开始计数)lv_label_set_text_sel_end
用于设置标签对象文本选中结束位置的函数
void lv_label_set_text_sel_end(lv_obj_t * label, uint32_t index);
//label:指向标签对象的指针
//index:文本选中结束位置的字符索引(从 0 开始,注意是结束位置的下一个字符索引,即不包含该索引对应的字符,而是选中到该索引的前一个字符)lv_label_get_text
用于获取标签对象的文本字符串
const char * lv_label_get_text(const lv_obj_t * label);
//label: 指向标签对象的指针
//ret:指向标签文本的常量字符串指针(以null结尾),如果标签不存在文本则返回NULLlv_label_get_long_mode
获取标签对象的“长文本模式”
lv_label_long_mode_t lv_label_get_long_mode(const lv_obj_t * obj);
//obj:标签对象指针
//ret:返回一个 lv_label_long_mode_t 枚举值,表示当前设置的长文本模式
typedef enum {
LV_LABEL_LONG_WRAP, // 自动换行(默认)
LV_LABEL_LONG_DOT, // 文本末尾显示省略号(...)
LV_LABEL_LONG_SCROLL, // 无限滚动
LV_LABEL_LONG_SCROLL_CIRCULAR, // 循环滚动
LV_LABEL_LONG_CLIP, // 直接裁剪,不换行也不滚动(超出部分不可见)
} lv_label_long_mode_t;lv_label_get_recolor
获取标签对象的文本重新着色状态
bool lv_label_get_recolor(const lv_obj_t * obj);
//obj: 指向标签对象的指针
//ret:true: 重新着色功能已启用,false: 重新着色功能已禁用lv_label_get_letter_pos
获取单个字符位置的功能
void lv_label_get_letter_pos(const lv_obj_t * obj, uint32_t char_id, lv_point_t * pos);
//obj:标签对象指针
//char_id:要查询的字符索引(从0开始,注意:对于包含换行的文本,索引是文本整体中的位置,而非某一行内的位置)
//pos:存储坐标的指针(将包含字符左上角的坐标)lv_point_t char_pos;
lv_label_get_letter_pos(label, 4, &char_pos); // 注意索引从0开始,所以第5个字符索引为4
printf("字符5的位置: x=%d, y=%d\n", char_pos.x, char_pos.y);lv_label_get_letter_on
用于确定标签上给定坐标点对应的字符索引
uint32_t lv_label_get_letter_on(const lv_obj_t * obj, lv_point_t * pos_in);
//obj: 标签对象指针
//pos_in: 指向坐标点的指针(坐标相对于标签对象)
ret:该坐标点下的字符索引,如果坐标不在任何字符上则返回 LV_LABEL_TEXT_SEL_OFF(通常定义为 0xFFFF)lv_label_is_char_under_pos
用于检查给定的点是否位于标签的某个字符之上
bool lv_label_is_char_under_pos(const lv_obj_t *obj, lv_point_t *pos)
//obj: 标签对象指针
//pos: 指向坐标点的指针(坐标相对于标签对象)
//ret:点在标签某个字符之上返回true,否则返回falselv_label_get_text_selection_start
用于获取标签文本选中的起始索引
uint32_t lv_label_get_text_selection_start(const lv_obj_t *obj)
//obj: 标签对象指针
//ret:选择的开始索引编号,如果没有选择返回LV_LABEL_TEXT_SELECTION_OFFlv_label_get_text_selection_end
用于获取标签文本选中的结束索引
uint32_t lv_label_get_text_selection_end(const lv_obj_t *obj)
//obj: 标签对象指针
//ret:选择的结束索引编号,如果没有选择返回LV_LABEL_TXT_SEL_OFFlv_label_ins_text
用于向标签中插入文本,这个标签的内容不能是静态的
void lv_label_ins_text(lv_obj_t *obj, uint32_t pos, const char *txt)
//obj: 标签对象指针
//pos:要插入的文本的索引位置,0表示从开头, LV_LABEL_POS_LAST表示在最后
//txt:待插入文本的指针lv_label_cut_text
用于从文本中删除一段内容,这个标签的内容不能是静态的
void lv_label_cut_text(lv_obj_t *obj, uint32_t pos, uint32_t cnt)
//obj: 标签对象指针
//pos:要删除的字符的起始位置的索引
//cnt:要删除的字符的数量
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]