LVGL8.3 --lv_label 标签

本文详细介绍了LVGL中的Label组件,包括Label的概述、组成部分、样式设定(如文本颜色、换行、长模式等)、文本选择以及API函数,涵盖了Label的创建、文本操作和配置等关键内容。
摘要由CSDN通过智能技术生成

一、Label 简介

1.1 Overview(概述)

标签是用来显示文本的基本对象类型。

1.2 Parts and Styles(部分和风格)

  • LV_PART_MAIN :使用所有典型的背景属性和文本属性。 填充值可用于在文本和背景之间添加空间。
  • LV_PART_SCROLLBAR: 当文本大于组件的大小时显示的滚动条。
  • LV_PART_SELECTED: 告诉所选文本的样式,只能使用 text_color 和 bg_color 样式属性。

:文本的背景的opa默认是0。

二、Label 使用

2.1 Set text(设置文本)

标签设置文本LVGL共提供了3中方式:
① 将动态分配一个缓冲区,并且提供的字符串将被复制到该缓冲区中。
② 类似printf 格式通过传递参数来设置文本。
③ 显示来自静态字符缓冲区的文本。

lv_label_set_text(label, "New text");
lv_label_set_text_fmt(label, "Value: %d", 15);
lv_label_set_text_static(label, "Text");

2.2 Newline(新行)

换行符由标签对象自动处理。 您可以使用 \n 来换行。 例如:“line1\nline2\n\nline4”

2.3 Long modes(长模式)

enum {
    LV_LABEL_LONG_WRAP,            /**< 保持对象宽度,换行过长的行,展开对象高度*/
    LV_LABEL_LONG_DOT,             /**< 保持大小,如果文本太长,在末尾写圆点*/
    LV_LABEL_LONG_SCROLL,          /**< 保持文本大小并来回滚动*/
    LV_LABEL_LONG_SCROLL_CIRCULAR, /**< 保持大小并循环滚动文本*/
    LV_LABEL_LONG_CLIP,            /**< 保持大小并剪辑文本*/
};
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);

2.4 Text recolor(文本重新着色)

在文本中,想要设置部分文本为特定的颜色,需要用到的接口 void lv_label_set_recolor(lv_obj_t obj, bool en);
使用步骤如下:

 /*使能recolor*/
 lv_label_set_recolor(label,true);
 /*设置对应文本颜色*/
 lv_label_set_text(label,"#0000ff color# my test");

注:必须先使能recolor重新着色才能生效,使用“# # ”中间要有字体颜色参数和显示内容 其中“0000FF”表示Hex格式的RGB值。

2.5 Text selection(文本选择)

如果通过LV_LABEL_TEXT_SELECTION(lv_conf.h中选择) 启用,可以选择部分文本。 这与在 PC 上使用鼠标选择文本时类似。使用接口。

void lv_label_set_text_sel_start(lv_obj_t* obj, uint32_t index); //选择起始索引
void lv_label_set_text_sel_end(lv_obj_t* obj, uint32_t index);//选择结束索引

示例与实现
在这里插入图片描述

2.6 Very long texts(超长文本)

LVGL 可以通过保存一些额外的数据(~12 字节)来有效地处理很长(例如 > 40k 个字符)的标签以加快绘图速度。 要启用此功能,请在“lv_conf.h”中设置“LV_LABEL_LONG_TXT_HINT 1”。

三、Label API

lv_obj_t * lv_label_create(lv_obj_t * parent);									//创建一个标签对象

void lv_label_set_text(lv_obj_t * obj, const char * text);						//为标签设置一个新文本。内存将分配给存储文本的标签。
void lv_label_set_text_fmt(lv_obj_t * obj, const char * fmt, ...) LV_FORMAT_ATTRIBUTE(2, 3);//为标签设置一个新的格式化文本。内存将分配给存储文本的标签。
void lv_label_set_text_static(lv_obj_t * obj, const char * text);				//设置静态文本。它不会被标签保存,所以'text'变量必须是“活着”,而标签存在。
void lv_label_set_long_mode(lv_obj_t * obj, lv_label_long_mode_t long_mode);	//设置文本长度大于对象大小的标签的行为
void lv_label_set_recolor(lv_obj_t * obj, bool en);								//通过内联命令启用重新着色
void lv_label_set_text_sel_start(lv_obj_t * obj, uint32_t index);				//设置文本选择应该从哪里开始
void lv_label_set_text_sel_end(lv_obj_t * obj, uint32_t index);					//设置文本选择的结束位置

char * lv_label_get_text(const lv_obj_t * obj);									//获取标签的文本
lv_label_long_mode_t lv_label_get_long_mode(const lv_obj_t * obj);				//获取标签的长模式
bool lv_label_get_recolor(const lv_obj_t * obj);								//获取重新着色属性
void lv_label_get_letter_pos(const lv_obj_t * obj, uint32_t char_id, lv_point_t * pos);		//获取一个字母的相对x和y坐标
uint32_t lv_label_get_letter_on(const lv_obj_t * obj, lv_point_t * pos_in);		//获取标签相对位置上的字母索引。
bool lv_label_is_char_under_pos(const lv_obj_t * obj, lv_point_t * pos);		//检查是否在点下绘制字符。
uint32_t lv_label_get_text_selection_start(const lv_obj_t * obj);				//获取选择的起始索引。
uint32_t lv_label_get_text_selection_end(const lv_obj_t * obj);					//获取选择结束索引。

void lv_label_ins_text(lv_obj_t * obj, uint32_t pos, const char * txt);			//插入一个文本到标签。标签文本不能是静态的。
void lv_label_cut_text(lv_obj_t * obj, uint32_t pos, uint32_t cnt);				//从标签中删除字符。标签文本不能是静态的。
  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值