合宙Air724UG LuatOS-Air LVGL API控件-标签 (Label)

标签 (Label)

Label.png


标签是 LVGL 用来显示文字的控件。

示例代码

label = lvgl.label_create(lvgl.scr_act(), nil)
lvgl.label_set_recolor(label, true)                     
lvgl.label_set_text(label, "#0000ff Re-color# #ff00ff words# #ff0000 of\n# align the lines to\n the center and wrap\n long text automatically.")
lvgl.obj_set_width(label, 150)  
lvgl.label_set_align(label, lvgl.LABEL_ALIGN_CENTER)
lvgl.obj_align(label, nil, lvgl.ALIGN_CENTER, 0, -40)

创建

标签是通过 lvgl.label_create 函数创建的。

label = lvgl.label_create(lvgl.scr_act(), nil)

设置文字

可以使用 lvgl.label_set_text 设置标签上的文字显示内容。

lvgl.label_set_text(label, "Hello World!")

image.png

长模式

标签是有宽度的,默认情况下,在设置文字后会自行调整,标签宽度会自动扩充到文本宽度。但是这种显示方式是可以进行更改的,也就是设置 长模式,长模式是通过函数 lvgl.label_set_long_mode 进行设置的。使用长模式有个前提,就是文字内容需要比标签长。所以需要先设置 长模式,然后设置标签宽度,最后才是设置文字内容。长模式的选项有以下几种:

-- 设置模式
lvgl.LABEL_LONG_EXPAND 	    
lvgl.LABEL_LONG_BREAK  	    
lvgl.LABEL_LONG_CROP   	   
lvgl.LABEL_LONG_DOT    	      
lvgl.LABEL_LONG_SROLL  	    
lvgl.LABEL_LONG_SROLL_CIRC  

我们先来看下 lvgl.LABEL_LONG_BREAK 的显示效果,注意顺序,长模式宽度文字

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_BREAK)
lvgl.obj_set_width(lab, 60)
lvgl.label_set_text(lab, "ABCDEFGHIJKLMK")

image.png

lvgl.LABEL_LONG_CROP 超出长度内容部分会直接截断

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_CROP)

image.png

lvgl.LABEL_LONG_DOT 同样会截断显示,但是会在标签后添加 ...,来表示有省略内容。

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_DOT)

image.png

lvgl.LABEL_LONG_SROLL 是设置滚动模式,文字滚动方式是左右滚动。

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_SROLL)

jdfw6.gif

lvgl.LABEL_LONG_SROLL 也是设置滚动模式,文字滚动方式是循环滚动。

lvgl.label_set_long_mode(lab, lvgl.LABEL_LONG_SROLL_CIRC)

jdfw7.gif

文字方向

文字的默认方向是依靠文本方向的,中英文都是从左向右书写阅读的,但是有些文字的书写阅读方向是从右向左的,比如阿拉伯文,lvgl.LABEL_ALIGN_AUTO 就是根据文字方向对齐。文字对齐方向就是靠左,靠右,居中三种,这个没有什么好展示的了,这里有一点需要注意的是,在使用长模式时需要文字内容比标签宽度宽,但是要看出文字对齐方向效果则需要文字内容比标签宽度窄,所以我们需要把标签宽度加长,这里只展示个靠右的效果。

lvgl.obj_set_width(lab, 160)
lvgl.label_set_text(lab, "ABCDE")
lvgl.label_set_align(lab, lvgl.LABEL_ALIGN_RIGHT)

image.png

设置颜色

文本设置颜色可以通过启用 recolor 实现:

lvgl.label_set_recolor(lab, true)

随后就可以通过命令设置文本的不同部分颜色,来对文本进行重新着色。标签会把 # 打头的6个数字识别为颜色值,该模式可以随时取消。

lvgl.label_set_recolor(lab, true)
lvgl.label_set_text(lab, "#FF0000 RED#\n#00FF00 GREEN#\n#0000FF BLUE#\n")

image.png

编辑

可以通过函数对标签的文本进行简单的编辑,LVGL 的官方库是由 C语言 编写,C语言本身对文本操作不是特别方便。Lua 相对于 C 来说文本处理能力要强很多,所以此接口用途范围也比较窄。label_cut_text 删除文本,虽然 cut 看起来像是"剪切",实际上这里的意思是"删除",该函数的返回值是空,并没有把剪切完的文本传递出来。label_ins_text 插入文本,在指定的位置插入文本。

API

lvgl.label_create(par, copy)|
|功能|创建一个标签对象|
|返回|指向创建的标签对象的指针|
|参数||
|par|指向对象的指针, 它将是新键对象的父对象|
|copy|指向标签对象的指针, 如果不为 nil, 则将从其复制新对象|

lvgl.label_create

调用lvgl.label_create(label, text)
功能设置标签的新文本
参数
label指向标签对象的指针
text需要对标签设置的文本

lvgl.label_set_long_mode

调用lvgl.label_set_long_mode(label, mode)
功能设置标签的长模式显示
参数
label指向标签对象的指针
mode标签的长模式
lvgl.LABEL_LONG_EXPAND
lvgl.LABEL_LONG_BREAK
lvgl.LABEL_LONG_CROP
lvgl.LABEL_LONG_DOT
lvgl.LABEL_LONG_SROLL
lvgl.LABEL_LONG_SROLL_CIRC

lvgl.label_set_align

调用lvgl.label_set_align(label, align)
功能设置标签的文字对齐方式
参数
label指向标签对象的指针
align标签的对齐方式
lvgl.LABEL_ALIGN_AUTO
lvgl.LABEL_ALIGN_CENTER
lvgl.LABEL_ALIGN_LEFT
lvgl.LABEL_ALIGN_RIGHT

lvgl.label_set_recolor

调用lvgl.label_set_recolor(label, en)
功能启动重新着色功能
参数
label指向标签对象的指针
entrue 打开重新着色,false 关闭重新着色

lvgl.label_set_anim_speed

调用lvgl.label_set_anim_speed(label, speed)
功能设置文本滚动的速度
参数
label指向标签对象的指针
speed文本滚动的速度,单位是 像素/秒

lvgl.label_ins_text

调用lvgl.label_ins_text(label, pos, txt)
功能在标签上插入文本
参数
label指向标签对象的指针
pos文本插入的位置
txt需要插入的文本

lvgl.label_cut_text

调用lvgl.label_cut_text(label, pos, cnt)
功能从标签中删除文本
参数
label指向标签对象的指针
pos文本删除的位置
cnt删除文本的个数

lvgl.label_is_char_under_pos

调用lvgl.label_is_char_under_pos(label, tpos)
功能检查某坐标点位置是否绘制有字符
返回有字符 true,无字符 false
参数
label指向标签对象的指针
tpos坐标点的 table,如 {2, 3}

lvgl.label_get_text

调用lvgl.label_get_text(label)
功能获取标签的设置文本
返回当前标签文本
参数
label指向标签对象的指针

lvgl.label_get_align

调用lvgl.label_get_align(label)
功能获取标签的对齐方式
返回当前标签的对齐方式
参数
label指向标签对象的指针

lvgl.label_get_anim_speed

调用lvgl.label_get_anim_speed(label)
功能获取标签的滚动速度
返回当前标签的滚动速度
参数
label指向标签对象的指针

lvgl.label_get_long_mode

调用lvgl.label_get_long_mode(label)
功能获取标签的显示模式
返回当前标签的显示模式
参数
label指向标签对象的指针

lvgl.label_get_recolor

调用lvgl.label_get_recolor(label)
功能获取当前文本着色开关
返回当前文本着色是否打开
形参
label指向标签对象的指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/75173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B站:AB test [下]

Focus在&#xff1a;AB Test结束后&#xff0c;如何进行显著性检验&#xff1f;&#xff08;以判断改动是否有效果&#xff09; 引入&#xff1a;Z检验和T检验 而T检验适用于 n<30 的小样本 值得注意的是&#xff1a;统计上显著并不意味着现实中显著&#xff01; e.g. 加速…

尚硅谷大数据项目《在线教育之离线数仓》笔记008

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 P123 P124 P125 P126 P127 P128 P129 P123 Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用&#xff0c;可对接各种数据源&#xff0c;包括很多现代的大数…

医院空调冷热源设计方案VR元宇宙模拟演练的独特之处

作为一个备受关注的技术-元宇宙&#xff0c;毋庸置疑的是&#xff0c;因为建筑本身契合了时尚、前卫、高端、虚拟、科幻、泛在、协作、互通等元素特征&#xff0c;因此在建筑行业更需要元宇宙&#xff0c;以居民建筑环境冷热源设计来说&#xff0c;元宇宙会打破既定的现实阻碍和…

LVS NAT模式负载均衡群集部署

目录 1 群集(集群) cluster 1.1 群集的类型 2 LVS的工作模式及其工作过程 2.1 NAT模式&#xff08;VS-NAT&#xff09; 2.2 直接路由模式&#xff08;VS-DR&#xff09; 2.3 IP隧道模式&#xff08;VS-TUN&#xff09; 3 LVS-NAt 模式配置步骤 3.1 部署共享存储 3.2 配…

SSL证书验签时要带www吗?

单域名证书&#xff1a;顶级域名如www.abc.com或abc.com 不管你提交订单的时候填写的域名是带www或不带www的域名&#xff0c;签发的证书均支持www和不带www的域名 单域名证书&#xff1a;子域名如mail.abc.com&#xff0c;签发的证书仅支持mail.abc.com 通配符证书&#xff…

MySQL触发器使用指南大全

一、介绍 触发器是与表有关的数据库对象&#xff0c;指在insert/update/delete之前或之后&#xff0c;触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性&#xff0c;日志记录&#xff0c;数据校验等操作。 使用别名OLD和NEW来引…

C++之生成key-value键值三种方式(一百九十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Web server failed to start. Port 8080 was already in use.之解决方法

问题&#xff1a; Web server failed to start. Port 8080 was already in use&#xff0c;这句错误描述意思是当前程序的端口号8080被占用了&#xff0c;需要将占用该端口的程序停止掉才行&#xff1b;错误如图所示&#xff1a; 解决方法&#xff1a; 按住winr&#xff0c;输入…

React 消息文本循环展示

需求 页面上有个小喇叭&#xff0c;循环展示消息内容 逻辑思路 设置定时器&#xff0c;修改translateX属性来实现滚动&#xff0c;判断滚动位置&#xff0c;修改list位置来实现无限滚动 实现效果 代码 /** Author: Do not edit* Date: 2023-09-07 11:11:45* LastEditors: …

android studio的Android Drawable Preview

Android Drawable Preview 应用后&#xff0c;如下图&#xff1a; 再也不用一个一个点开去看了 其他学习资料&#xff1a; 1、付费专栏《Android kotlin入门到进阶系列讲解》&#xff1a;https://blog.csdn.net/qq_35091074/category_11036895.html 2、免费专栏《Android kot…

【大虾送书第九期】速学Linux:系统应用从入门到精通

目录 &#x1f36d;写在前面 &#x1f36d;为什么学习Linux系统 &#x1f36d;Linux系统的应用领域 &#x1f36c;&#xff11;.Linux在服务器的应用 &#x1f36c;&#xff12;.嵌入式Linux的应用 &#x1f36c;&#xff13;.桌面Linux的应用 &#x1f36d;Linux的版本选择 &a…

使用PHPStudy在本地快速建立网站并实现局域网外访问(无公网IP)

文章目录 使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2.2 映…

无涯教程-JavaScript - IMPOWER函数

描述 IMPOWER函数以x yi或x yj文本格式返回加到幂的复数。求幂的复数的计算方法如下- $$(x yi)^ n r ^ ne ^ {n \theta} r ^ n \cos n \theta ir ^ n sin n \theta $$ 哪里- $$r \sqrt {x ^ 2 y ^ 2} \:\:和\:\:\theta \tan ^ {-1} \left(\frac {y} {x} \right)\:…

数字 IC 设计职位经典笔/面试题(四)

共100道经典笔试、面试题目&#xff08;文末可全领&#xff09; 画出 CMOS 电路的晶体管级电路图,实现 YA*BC(DE).&#xff1f; 画出 YABC 的 CMOS 电路图&#xff0c;画出 YABCD 的 CMOS 电路图。 利用与非门和或非门实现 YABC(DE)((AB’)(CD)’(CE)’)’ 三个两输入与非门&a…

【力扣每日一题】2023.9.10 课程表Ⅱ

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 今天的题目和昨天类似&#xff0c;不过今天要我们求出学习所有课程的先后顺序。 昨天只需要我们求出能否学习完所有课程&#xff0c;因此…

JAVASE事件监听

代码&#xff1a; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner;import javax.swing.JButton; import javax.…

CSS文字居中对齐学习

CSS使用text-align属性设置文字对齐方式&#xff1b;text-align:center&#xff0c;这样就设置了文字居中对齐&#xff1b; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>css 水平居中</title><style>.box …

ICCV 2023 | SuS-X:仅靠类别名称微调CLIP模型,剑桥大学联合DeepMind出品

论文链接&#xff1a; https://arxiv.org/abs/2211.16198 代码仓库&#xff1a; https://github.com/vishaal27/SuS-X 对比语言图像预训练&#xff08;Contrastive Language-Image Pre-training&#xff0c;CLIP&#xff09; 已成为计算机视觉社区通向自然语言领域的一种常用的…

机器学习入门教学——交叉验证

1、简介 交叉验证是在机器学习建立模型和验证模型参数时常用的办法&#xff0c;一般被用于评估一个机器学习模型的表现。更多的情况下&#xff0c;我们也用交叉验证来进行模型选择。【注】在训练模型时&#xff0c;为了提高模型的质量&#xff0c;我们会将数据集划分为训练集、…

代码随想录Day_60打卡

①、柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 事例&#xff1a; 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;1…