合宙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指向标签对象的指针
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l531798151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值