LVGL 控件之标签(lv_label)

【LVGL-标签部件 lv_label】 【代码】【LVGL-标签部件】 阅读详情
AI摘要

本文围绕LVGL控件中的标签(lv_label)展开。先介绍标签部件由主体背景、滚动条和所选文本组成,接着阐述设置文本的三种方法,包括动态内存分配、格式化输出及静态文本设置。还说明了长模式下文本展现形式,以及文本着色、选择、内置图标、事件处理等内容,最后提及API函数。


一、概述

标签部件由三个部分组成:主体背景、滚动条和所选文本:

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

下面是一个简单的标签示例:

lv_obj_t* lv_label1 = lv_label_create(lv_scr_act());
lv_label_set_text(lv_label1, "Hello World");
lv_obj_center(lv_label1);

二、标签

1、设置文本

设置标签部件文本的方法有三种:

  1. 调用 lv_label_set_text 函数

该函数是最常用的标签文本设置函数,它存储文本的内存由动态内存分配的。

  1. 调用 lv_label_set_text_fmt 函数

该函数与 C 语言的 sprintf 输出函数类似,都可以设置“式样化字符串”和“参数表”,示例代码如下:

lv_label_set_text_fmt(label, "Value: %d", 15);

  1. 调用 label_set_text_static 函数

该函数可以设置静态文本,该文本不存储在动态内存中,而是直接使用指定的缓冲区,此时,如果使用数组设置文本,则该数组不能是局部变量。

char *buf = "hello";

void my_gui(void)
{
    lv_obj_t* lv_label1 = lv_label_create(lv_scr_act());
    lv_label_set_text_static(lv_label1, buf);
    lv_obj_center(lv_label1);
}

在这里插入图片描述

当然也可用 ‘\n`’ 来进行换行:

lv_label_set_text(lv_label1, "Hello\nWorld\n!");

2、长模式

默认情况下,标签部件的宽度和高度都会根据文本的大小来动态变化。如果用户固定了标签部件的大小,并且文本的长度超过了部件的长度,则可以使用以下几个长文本模式来选择文本展现的形式:

  1. LV_LABEL_LONG_WRAP(默认):如果标签部件的高度是 LV_SIZE_CONTENT,则该部件高度将被扩展,否则文本将被剪切。
  2. LV_LABEL_LONG_DOT:将标签文本右下角的最后 3 个字符替换为点。
  3. LV_LABEL_LONG_SCROLL:来回滚动。如果文本比标签部件宽,则往水平方向滚动。如果文本比标签部件高,则往垂直方向滚动。注意:文本只会往一个方向滚动,水平方向具有更高的优先级。
  4. LV_LABEL_LONG_SCROLL_CIRCULAR:循环滚动。如果文本比标签部件宽,则往水平方向滚动。如果文本比标签部件高,则往垂直方向滚动。注意:文本只会往一个方向滚动,水平方向具有更高的优先级。
  5. LV_LABEL_LONG_CLIP:直接裁剪标签部件外面的文本。

用户可以使用 lv_label_set_long_mode(label, LV_LABEL_LONG_...) 指定长模式。

示例:

lv_obj_t* lv_label1 = lv_label_create(lv_scr_act());
lv_label_set_text(lv_label1, "Hello World dfadf dsfadsaf dsfadsf !");
lv_label_set_long_mode(lv_label1, LV_LABEL_LONG_SCROLL_CIRCULAR);
lv_obj_set_content_width(lv_label1, 100);
lv_obj_center(lv_label1);

重要的是要注意,当创建标签并设置其文本时,标签的大小已扩展为文本大小。除了默认的 LV_LABEL_LONG_EXPAND ,长模式 lv_obj_set_width/height/size() 无效。

因此,需要更改长模式,首先设置新的长模式,然后使用 lv_obj_set_width/height/size() 设置大小。

另一个重要的注意事项是 LV_LABEL_LONG_DOT 在原地操纵文本缓冲区,以便添加/删除点。当使用 lv_label_set_text 或lv_label_set_array_text 时,将分配一个单独的缓冲区,并且该实现细节不会被注意。lv_label_set_static_text 并非如此!如果打算使用 LV_LABEL_LONG_DOT ,则传递给 lv_label_set_static_text 的缓冲区必须可写。

3、文本着色

用户需要让标签文本着色,可以调用 lv_label_set_recolor 函数。

lv_obj_t* lv_label1 = lv_label_create(lv_scr_act());
lv_label_set_text(lv_label1, "Hello #ff0000 World#!");
lv_label_set_recolor(lv_label1,true);
lv_obj_center(lv_label1);

注意:用户需要设置标签文本着色,必须按以下格式设置文本:#颜色 文本#

也可以通过样式改色:

lv_label_set_text(lv_label1, "Hello World!");
lv_obj_set_style_text_color(lv_label1, lv_color_hex(0xff0000), 0);

4、文本选择

如果在 lv_conf.h 中打开了 LV_LABEL_TEXT_SELECTION (默认开启),就可以选择部分文本了。这个和我们在 PC 用鼠标选中文本类似,但是这个效果只能在文本框 (lv_textarea) 中实现。Label 只能事先手动选择指定范围的文本

lv_label_get_text_selection_start(label, start_char_index);
lv_label_get_text_selection_start(label, end_char_index);

5、内置图标

  1. 直接显示图标
lv_label_set_text(lv_label1, LV_SYMBOL_OK);

在这里插入图片描述

  1. 与字符串一起使用
lv_label_set_text(lv_label1, LV_SYMBOL_OK "Apply");

  1. 许多个图标一起
lv_label_set_text(lv_label1, LV_SYMBOL_OK LV_SYMBOL_WIFI LV_SYMBOL_PLAY);

6、事件

Label 默认不接收输入事件,如果我们想设置输入类型的样式或者事件会无法生效,就需要打开 LV_OBJ_FLAG_CLICKABLE

lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE);
lv_obj_add_event_cb(label, function, LV_EVENT_ALL, 0);

7、API 函数

函数描述
lv_label_create()创建标签对象
lv_label_set_text()设置标签的新文本
lv_label_set_text_fmt()设置标签的新格式的文本
lv_label_set_text_static()设置一个静态文本
lv_label_set_long_mode()使用更长的文本然后设置对象大小来设置标签
lv_label_set_recolor()启用重新着色
lv_label_set_text_sel_start()设置选择开始索引
lv_label_set_text_sel_end()设置选择结束索引
lv_label_get_text()获取标签文本
lv_label_get_long_mode()获取标签的长模式
lv_label_get_recolor()获取重新着色属性
lv_label_get_letter_pos()获取字母的相对 x 和 y 坐标
lv_label_get_letter_on()获取标签相对点上的字母索引
lv_label_is_char_under_pos()检查是否在一个点下绘制了一个字符
lv_label_get_text_selection_start()获取选择开始索引
lv_label_get_text_selection_end()获取选择结束索引
lv_label_ins_text()在标签上插入文本。标签文本不能是静态的
lv_label_cut_text()从标签中删除字符。标签文本不能是静态的
LVGL笔记7--lv_label标签控件 LVGL笔记7–lv_label标签控件 标签控件介绍 ​ lv_label标签控件是LVGL中使用最频繁的控件,主要是用来显示文本信息的,可在程序运行中动态修改文本内容,支持换行显示、图标字体、部分文本重绘色、长文本显示、6种显示模式等功能 lv_label控件的API接口 长文本模式数据类型 enum { LV_LABEL_LONG_EXPAND, LV_LABEL_LONG_BREAK, LV_LABEL_LONG_DOT, LV_LABEL_LONG_SRO 阅读详情

相关推荐

标签(label)组件的使用

标签主要用于显示静态或动态的文字信息,如提示、标题、状态等。:可以设置标签的位置和对齐方式,使其适应不同的屏幕布局需求。:支持动态更改标签中的文本内容,比如实时数据显示。:虽然标签本身通常不具备交互功能,但可以通过改变其内容或样式来响应用户的操作,提供视觉反馈。:可以结合多语言系统,在不同语言环境下显示相应的文字。

Y2002168的博客 3261

LVGL学习笔记9 - 标签Label

显示字符串是通过对象Label实现的。Label的Parts只有LV_LABEL_PART_MAIN。标签通过lv_label_create创建。

pq的博客 9309

LVGL标签控件lv_label完全指南:从创建、文本模式到中文字库与滚动公告

在嵌入式GUI开发中,文本显示是最基础也最容易出问题的环节。LVGL作为主流的开源图形库,其文本控件lv_label承载了绝大多数信息呈现任务,但很多开发者在处理换行失效、中文乱码、刷新闪屏等问题时常常无从下手。理解lv_label的工作原理,需要从对象模型与文本内存行为入手:它默认复制字符串以保障安全,也提供静态文本接口以节约内存。在此基础上,长文本的五种显示模式——换行、省略号、滚动、循环滚动和裁剪——分别适用于不同场景,配合固定宽度与对齐方式,能实现稳定不抖动的动态数值刷新。字体是中文字体能否正确显示

weixin_29164843的博客 256

5、LVGL标签和样式

LVGL标签和样式 文章目录LVGL标签和样式LVGL标签标签API接口LVGL样式LVGL样式数据结构style.bodystyle.textstyle.imagestyle.linestyle.glass样式的使用 LVGL标签 标签本身是使用的最多的一个空间,主要作用是用来显示文本信息的.支持换行,图标字体,部分文本重绘色,长文本显示等. 标签API接口 API接口很多,在原子的资料里也写得很清楚,只罗列一些我常用的API. lv_label_set_text_fmt 使用方法和printf很接近

a986096115的博客 9246

LVGL实战:lv_label标签控件的6种长文本模式详解与应用场景

本文详细解析了LVGL中lv_label标签控件的6种长文本处理模式,包括扩展、换行、省略号、滚动及裁剪模式。针对嵌入式UI开发中常见的文本溢出问题,文章结合实战场景,阐述了每种模式的核心行为、适用场景、配置要点与避坑指南,帮助开发者根据界面布局与信息展示需求,选择最合适的文本处理策略,实现整洁专业的用户界面。

weixin_29211309的博客 454

lvgl 9标签控件 (lv_label) 使用指南

lv_label是 LittlevGL 中最基础的控件之一,用于显示文本。无论是简单的文字内容,还是需要动态更新的文本,lv_label都能提供灵活和高效的解决方案。该控件支持多种文本样式、文本溢出处理方式以及文本选择功能,适用于各种图形界面应用。lv_label是 LittlevGL 提供的一个非常灵活的文本显示控件。无论是静态文本、动态文本、长文本处理,还是文本选择功能,lv_label都能够满足各种需求。通过精细的样式配置和文本处理选项,您可以在嵌入式应用程序中轻松实现丰富的文本显示效果。

m0_62599305的博客 1740

LVGL学习笔记-----标签控件(lv_label)

@author: 明月清了个风⭐️关于LVGL标签控件的一些笔记,对应课程3-1-1 ~ 3-1-5的内容。

weixin_60278491的博客 1459

LVGL(lv_label标签)

lv_label 是 LVGL 中用于显示文本的基础控件,支持静态文本、动态数据、滚动文本等多种功能。通过 lv_label_create() 创建标签,并使用 lv_label_set_text() 设置文本内容。标签支持自动换行、文本对齐、滚动显示等模式,可通过 lv_label_set_long_mode() 进行配置。此外,还可以通过样式设置字体、颜色、背景等属性。lv_label 还支持 Unicode 字符和内置符号字体,适用于嵌入式图形界面开发。常见问题如文本显示不全、滚动无效等,可通过调整宽

m0_49476241的博客 1358

LVGL 入门(八):标签控件 lv_label

LVGL标签控件全解析 本文全面介绍了LVGL标签控件(lv_label)的核心功能和使用方法。主要内容包括: 基础组成:标签由主矩形区、滚动条和选中高亮区构成 文本操作:支持直接设置、格式化文本和静态文本三种方式 超长处理:提供换行、省略号、滚动等多种显示模式 高级功能:文本选择、图标显示、自定义颜色和动画效果 动态刷新:结合定时器实现实时数据更新 通过本文可以掌握LVGL最基础文本显示控件的完整功能,适用于嵌入式GUI开发中的各类文本展示需求。

2502_90552706的博客 510

LVGL lv_label六大文本模式详解与动态切换实践

lv_label是LVGL嵌入式GUI中最基础的文本显示控件,其核心能力不仅限于静态渲染,更体现在对长文本的多种布局策略支持。原理上,它通过text_mode参数驱动内部文本测量、分词与重绘流程,实现滚动、省略、自适应宽高及循环动画等差异化行为。技术价值在于以极低内存开销(如DOT模式仅需截断)满足工业HMI对实时性、稳定性和资源敏感性的严苛要求。典型应用场景涵盖状态栏提示、滚动字幕、日志输出、紧凑型列表项及告警信息慢读等。本文围绕STM32+LVGL v7.11平台,深入解析ROLL、ROLL_CIRCU

weixin_36001279的博客 52

轻量级替代方案:用AIFlowy + Ollama在本地快速搭建一个可用的AI智能体平台

本文介绍了如何使用AIFlowy和Ollama在本地快速搭建轻量级AI智能体平台,涵盖从环境准备到智能体集成的全流程。通过简化部署步骤和优化性能,15分钟内即可完成搭建,适用于原型验证和小团队协作,显著提升开发效率。

weixin_29207533的博客 217

LVGL lv_label标签控件(5)

lv_label 相关API在lv_label.h中 文本模式 enum { /*实时自动扩展标签对象大小来包裹文本内容*/ LV_LABEL_LONG_EXPAND, /**< Expand the object size to the text size*/ //标签对象宽度不变,当文本内容超过标签对象宽度,自动换行文本内容 LV_LABEL_LONG_BREAK, /**< Keep the object width, break the too l

jiang_2018的博客 3586

别再为镜面物体检测发愁了!手把手教你用PMD相位偏折术增强2.5D形状图细节(附Python代码)

本文详细解析了PMD相位偏折术在工业视觉中镜面物体检测的应用,通过2.5D成像方案增强形状图细节。文章提供了Python代码示例,介绍了一种计算高效的局部特征增强算法,帮助解决产线环境中的噪声问题,提升缺陷识别准确率。

weixin_29299807的博客 345

LVGL入门:lv_label标签控件深度解析与实战避坑指南

在嵌入式GUI开发中,文本显示始终是交互界面的核心基础。LVGL作为主流轻量级图形库,其标签控件lv_label承担着绝大多数字符串渲染任务,从菜单标题到传感器数值都离不开它。理解lv_label的底层机制,包括动态文本的内存管理、五种长文本模式的应用差异、中文字体加载与字符集裁剪策略,能显著提升界面稳定性与开发效率。本文从实际工程视角出发,系统梳理标签的创建流程、样式配置、定时刷新与事件处理,并结合状态栏、仪表盘等典型场景,给出可落地的内存优化与异常排查方案。无论是入门新手还是进阶开发者,都能借此把LVG

weixin_29164843的博客 193

从Podfile到分享成功:ShareSDK小红书模块集成全流程实战(附视频分享代码)

本文详细介绍了iOS应用如何通过ShareSDK集成小红书分享功能的全流程,包括环境配置、SDK初始化、图片和视频分享实现,以及常见问题排查和性能优化策略。特别针对视频分享这一高频需求场景,提供了完整的代码示例和实战技巧,帮助开发者快速实现社交分享功能。

weixin_42540248的博客 224

Cursor概述及环境配置

Cursor 是一款基于 AI 的代码编辑器,支持 VS Code 配置迁移和 Java 开发环境配置。主要功能分为 Cursor Settings(AI 相关设置)和 Editor Settings(基础编辑器设置)。用户可通过一键导入或手动方式迁移 VS Code 配置,配置包括主题、扩展和快捷键等。对于 Java 开发,需配置 JDK 和 Maven 路径,并安装 Java 扩展插件以获得完整开发体验,如代码补全、调试和 Maven 项目管理。此外,Cursor 支持汉化配置,用户可安装中文语言包切换

Knight 3548

GUI提示功控件,LVGL『Label标签控件』介绍

一. LVGL GUI标签控件的概念 标签是用于显示文本的基本对象类型!算是一个比较常用的控件了 二. LVGL GUI标签小部件和样式 标签只有一个主要部分,称为 LV_LABEL_PART_MAIN 。它使用所有典型的背景属性和文本属性。填充可用于使文本的区域在相关方向上变小。 三. LVGL GUI标签控件的使用 1. 设置文本(Set text) 用这个函数设置文本lv_label_set_text(label,"Newtext") 用这个函数设置文本格式lv_label_set_..

朝气蓬勃 5226

l0phtcrack 7(爆破管理员密码)使用教程

l0phtcrack7简称lc7,是爆破计算机管理员密码的软件,早期是网络安全管理员用来检测系统用户是否使用了不安全的密码,后被黑客用于用户口令破解 功能:该工具支持远程破解,理论上能破解所有密码,但对复杂度比较高的密码,破解时间很长 使用前提:1.登录了需要破解的计算机 2.知道需要破解的计算机的一个管理员的账户,密码 ** 也许你会疑惑,我都知道了一个管理员账户密码了,还要另外的管理员密码...

Xiongcanne的博客 2万+

LVGL学习笔记-----标签控件(lv_label)显示中文

首先下载好选择的字体的字体文件,后缀为.otf使用[LVGL提供的字体转换器](),页面如下:字体命名以px为单位指定高度(字体大小)设置bpp,值越高,字体越平滑(抗锯齿效果)选择TTF 或WOFF格式字体⽂件设置要包含在字体中的Unicode字符范围或在符号字段中列出字符可以同时选择多个字体文件转换,并为其指定范围和符号,这些字符将被合并转换到一个文件当中。单击转换按钮下载转换出的字体文件,为.c文件。

weixin_60278491的博客 814

Rust 与 Golang 深度对决:从语法到应用场景的全方位解析

Rust 定义函数以fn关键字开头,参数需明确指定类型,返回值类型紧跟在箭头->之后。// 定义函数add,接收两个i32类型参数a和b,返回i32类型结果,功能为两数相加a + bRust 和 Golang 各有千秋,在不同领域展现独特优势。Rust 凭借强大的内存安全与高性能,在系统编程、网络编程以及对内存安全和性能要求高的场景中表现突出;Golang 则以简洁语法和出色并发性能,在云计算、分布式系统、Web 开发等领域占据一席之地。

muyouking 1769

杭电计算机组成原理课程设计-实验七-寄存器堆设计实验

寄存器堆实验实验原理实验内容模块功能说明模块逻辑引脚图寄存器堆模块代码REG模块测试用例REG-ALU测试用例实验结果记录 寄存器堆实验结果及分析ALU_REG运算器模块实验结果及分析探索与思考 实验原理   32×32位的寄存器堆模块示意图如图所示,含有32个寄存器,每个寄存器32位。该寄存器堆具有A和B两个读端口,分别由 5 位的寄存器编号 R_Addr_A 和 R_Addr_B 来寻址 2 个寄存器,读出的数据则由 R_Data_A(32 位)和R_Data_B(32 位)输出。读访问时,没有使能或者

HDU-整蛊小子-⏰☂️/蚂蚁集团研发工程师 1万+

LVGL_v9 学习笔记

AIshixian的博客 1768

从零配置EtherCAT IGH主站:手把手教你处理内核版本与实时性优化的那些坑

本文详细指导如何从零配置EtherCAT IGH主站,涵盖内核版本适配、实时性优化及常见问题解决方案。通过精确匹配内核头文件、应用实时补丁和优化网卡驱动,帮助开发者实现微秒级响应,适用于工业自动化、机器人控制等高精度场景。

weixin_30790841的博客 381

LVGL_按钮部件(LV_btn)

在实际的LVGL项目工程中,按钮部件的使用频率是非常高的,它常用于控制设备的启停。在LVGL中,当按钮部件被创建出来之后,其默认是一个圆角矩形,较为遗憾的是,按钮部件并不能直接设置文本。本章节将分为以下几个小节:12.1按钮部件的组成12.2按钮部件的相关知识12.3按钮部件的API函数12.4按钮部件的实验按钮部件(lv_btn)按钮部件和基础对象非常类似,它们的绝大部分知识都是通用的,这里我们只介绍它们之间的区别:① 默认情况下,按钮部件不可滚动。

weixin_49038319的博客 514

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

LVGL学习(一)- 初体验

本文介绍了如何使用LVGL(轻量级图形库)进行嵌入式UI开发入门。首先说明采用VSCODE+SDL2+LVGL V9+MSYS2的模拟环境搭建方案,随后通过一个"Hello, LVGL!"的示例程序,详细解析了核心函数:lv_init()初始化库、lv_sdl_window_create()创建显示窗口、lv_label_create()创建标签控件、lv_screen_active()获取屏幕对象等关键API的功能和调用方式。示例展示了创建500x500窗口、添加居中文本标签的基本流程

qq_26226375的博客 197

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LVGL8.2学习笔记

笔记主要记录LVGL控件基本的编程使用和相关的程序,并且在程序中对使用到的API函数进行简要注解(有些是个人的理解),以便后续根据实际项目所需直接套用对应的控件代码修改使用;本文主要参考的是正点原子LVGL的相关教程

pwzpwz1的博客 7266

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: Linux 下 C/C++ 程序编译的过程
下一篇: LVGL 控件之线条(lv_line)
Projectsauron
博客等级 码龄4年 2587粉丝 100原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值