合宙Air724UG LuatOS-Air LVGL API控件--下拉框 (Dropdown)

下拉框 (Dropdown)

dropdown.png


在显示选项过多时,可以通过下拉框收起多余选项。只为用户展示列表中的一项。

示例代码

-- 回调函数
event_handler = function(obj, event)if (event == lvgl.EVENT_VALUE_CHANGED) thenprint("Option:", lvgl.dropdown_get_symbol(obj))end
end
-- 创建下拉框
dd = lvgl.dropdown_create(lvgl.scr_act(), nil)
lvgl.dropdown_set_options(dd, [[Apple
Banana
Orange
Cherry
Grape
Raspberry
Melon
Orange
Lemon
Nuts]])
-- 设置对齐
lvgl.obj_align(dd, nil, lvgl.ALIGN_IN_TOP_MID, 0, 20)
lvgl.obj_set_event_cb(dd, event_handler)

创建

通过函数 dropdown_create 可以创建下拉列表控件。

dd = lvgl.dropdown_create(lvgl.scr_act(), nil)

添加选项

列表中的选项是通过 dropdown_set_options 添加的,通过传入一整个字符串设置的,选项之间是依靠换行符分割的,需要注意的是,如果使用 [[ ]] 这种方式表示字符串的话,左边不要留空白缩进。

lvgl.dropdown_set_options(dd, [[Apple
Banana
Orange
Cherry
Grape
Raspberry
Melon
Orange
Lemon
Nuts]])

image.png


设置完成后也可以向其中插入选项:

lvgl.dropdown_add_option(dd, "aa\nbb\ncc", 2)

aa.png

设置

下拉框可以设置的选项有:

展开方向

列表展开方向的设置函数是 dropdown_set_dir,下面我们分别设置 上 下 左 右 四个方向来看下显示效果。
下拉框在上面展开

lvgl.dropdown_set_dir(dd, lvgl.DROPDOWN_DIR_UP)

image.png


下拉框在下面展开

lvgl.dropdown_set_dir(dd, lvgl.DROPDOWN_DIR_DOWN)

image.png

下拉框在左边展开

lvgl.dropdown_set_dir(dd, lvgl.DROPDOWN_DIR_LEFT)

image.png

下拉框在右边展开

lvgl.dropdown_set_dir(dd, lvgl.DROPDOWN_DIR_RIGHT)

image.png

小图标

下拉框旁边的小图标也是可以更改的,不光可以是向下拉的小箭头,有关符号的内容可以参考图片章节。

lvgl.dropdown_set_symbol(dd, "\xef\x80\x81")

image.png


我们可以看下其他部分小图标,完整部分参考图片章节。

sym = {"\xef\x80\x81","\xef\x80\x88","\xef\x80\x8b","\xef\x80\x8c","\xef\x80\x8d","\xef\x80\x91","\xef\x80\x93","\xef\x80\x95","\xef\x80\x99","\xef\x80\x9c","\xef\x80\xa1","\xef\x80\xa6","\xef\x80\xa7","\xef\x80\xa8",
}for i=1, #sym dolvgl.dropdown_set_symbol(dd, sym[i])sys.wait(1000)
end

jdfw3.gif

列表框高度

展示出的列表项是根据页面大小自动展示的,但是列表高度也是可以手动设置的。

lvgl.dropdown_set_max_height(dd, 100)

image.png

控制

除了可以手动点击操作以外,下拉框也可以通过 API 进行操作,展开下拉框,收起下拉框,选择等操作。

while true dosys.wait(1000)lvgl.dropdown_open(dd)lvgl.dropdown_set_selected(dd, math.random(1, 8))sys.wait(1000)lvgl.dropdown_close(dd, lvgl.ANOM_OFF)
end

这个控件并没有被点击,完全是依靠 API 展开随机设置的。

jdfw.gif

事件

可以通过 lvgl.EVENT_VALUE_CHANGED 消息,获取选项的 ID。

-- 回调函数
event_handler = function(obj, event)if (event == lvgl.EVENT_VALUE_CHANGED) thenprint("Option:", lvgl.dropdown_get_symbol(obj))end
endlvgl.obj_set_event_cb(dd, event_handler)

jdfw2.gif

API

lvgl.dropdown_create

调用lvgl.dropdown_create(par, copy)
功能创建下拉框对象
返回指向创建的下拉框对象的指针
参数
par指向对象的指针, 它将是新下拉框的父对象
copy指向下拉框对象的指针, 如果不为 nil, 则将从其复制新对象

lvgl.dropdown_set_options_static

调用lvgl.dropdown_set_options_static(dd, options)
功能在字符串的下拉列表中设置选项
参数
dd下拉列表对象的指针
options通过换行分割的设置选项文本

lvgl.dropdown_add_option

调用lvgl.dropdown_add_option(dd, options, pos)
功能将选项从字符串添加到下拉框中
参数
dd下拉框对象的指针
option字符串选项
pos插入位置,从 0 开始

lvgl.dropdown_set_selected

调用lvgl.dropdown_set_selected(dd, sel_opt)
功能设置所选项
参数
dd下拉框对象的指针
sel_opt所选选项的编号,从 0 开始。

lvgl.dropdown_set_dir

调用lvgl.dropdown_set_dir(dd, dir)
功能设置下拉框的方向
参数
dd指向下拉框对象的指针
dirlvgl.DROPDOWN_DIR_LEFT
lvgl.DROPDOWN_DIR_RIGHT
lvgl.DROPDOWN_DIR_TOP
lvgl.DROPDOWN_DIR_BOTTOM

lvgl.dropdown_set_max_height

调用lvgl.dropdown_set_max_height(dd, h)
功能设置下拉框的最大高度
参数
dd指向下拉框的指针
h最大高度

lvgl.dropdown_set_symbol

调用lvgl.dropdown_set_symbol(dd, sign)
功能设置箭头或其他 sign, 以在关闭下拉框时显示
参数
dd下拉框对象的指针
symbol类似 lvgl.SYMBOL_DOWN 这样的字符

lvgl.dropdown_set_show_selected

调用lvgl.dropdown_set_show_selected(dd, show)
功能设置下拉框是否突出显示最后选择的选项并显示其文本
参数
dd指向下拉框对象的指针
showtrue 显示, false 不显示

lvgl.dropdown_get_text

调用lvgl.dropdown_get_text(dd)
功能获取下拉框的文本
返回文字字串
参数
dd指向下拉框对象的指针

lvgl.dropdown_get_options

调用lvgl.dropdown_get_options(dd)
功能获取下拉框的选项
返回下拉框选项字符串
参数
dd下拉框对象的指针

lvgl.dropdown_get_selected

调用lvgl.dropdown_get_selected(dd)
功能获取选择的选项
返回所选选项的 ID
参数
dd下拉框对象的指针

lvgl.dropdown_get_option_cnt

调用lvgl.dropdown_get_option_cnt(dd)
功能获取选项总数
返回列表中的选项总数
参数
dd下拉框对象的指针

lvgl.dropdown_get_max_height

调用lvgl.dropdown_get_max_height(dd)
功能获取固定高度值
返回打开下拉框时的高度 (0
参数
dd指向下拉框对象的指针

lvgl.dropdown_get_symbol

调用lvgl.dropdown_get_symbol(dd)
功能在下拉框绘制的 sign
返回sign 或 nil (如果未启用)
参数
dd下拉框对象的指针

lvgl.dropdown_get_dir

调用lvgl.dropdown_get_dir(dd)
功能获取列表展开方向
返回列表展开方向
参数
dd下拉框对象的指针

lvgl.dropdown_open

调用lvgl.dropdown_open(dd)
功能展开下拉框
参数
dd下拉框对象的指针

lvgl.dropdown_close

调用lvgl.dropdown_close(dd)
功能关闭(折叠)下拉框
参数
dd下拉框对象的指针
anim_enlvgl.ANIM_ON:使用动画 lvgl.ANOM_OFF:不使用动画

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

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

相关文章

IMX6ULL移植篇-uboot源码主要文件说明

一. uboot 源码分析前提 由于 uboot 会使用到一些经过编译才会生成的文件,因此,我们在分析 uboot的时候,需要先编译一下 uboot 源码工程。 这里所用的开发板是 nand-flash 版本。 本文学习续上一篇文章,如下: IMX6U…

Task :app:compileDebugKotlin FAILED

gradle.properties 里面加上 android.enableJetifiertrue

【LeetCode】19. 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点(中等) 方法:快慢指针 思路 为了找到倒数第 n 个节点,我们应该先找到最后一个节点,然后从它开始往前数 n-1 个节点就是要删除的节点。 对于一般情况:设置 fast 和 slow 两个…

idea配置gitLab

前言:网上有很多类似的文章,但描述不够详细 步骤1:安装git 如果安装成功再次点击TEST按钮展示如下:git版本 步骤2:idea配置gitlab 查看当前项目管理的 远程仓库再git的地址,该地址可是gitLab的&#xff0…

DNS解析

1.DNS介绍 DNS 表示域名系统。此系统实质上是用于整理和识别各个域名的网络电话簿。电话簿将“Acme Pizza”之类的名称转换为要拨打的正确电话号码,而 DNS 将“www.google.com”之类的网络地址转换为托管该网站的计算机的物理 IP 地址,如“74.125.19.147…

OpenCV(二十七):图像距离变换

1.像素间距离 2.距离变换函数distanceTransform() void cv::distanceTransform ( InputArray src, OutputArray dst, int distanceType, int maskSize, int dstType CV_32F ) src:输入图像,数据类型为CV8U的单通道图像dst:输出图像,与输入图像…

vue3 的 ref、 toRef 、 toRefs

1、ref: 对原始数据进行拷贝。当修改 ref 响应式数据的时候&#xff0c;模版中引用 ref 响应式数据的视图处会发生改变&#xff0c;但原始数据不会发生改变 <template><div>{{refA}}</div> </template><script lang"ts" setup> impor…

RabbitMQ学习笔记

1、什么是MQ&#xff1f; MQ全称message queue&#xff08;消息队列&#xff09;&#xff0c;本质是一个队列&#xff0c;FIFO先进先出&#xff0c;是消息传送过程中保存消息的容器&#xff0c;多 用于分布式系统之间进行通信。 在互联网架构中&#xff0c;MQ是一种非常常见的…

js中call、apply和bind:

文章目录 一、区别:二、案例&#xff1a;三、实现&#xff1a;【1】call实现【2】apply实现【3】bind实现 一、区别: call、apply、bind相同点&#xff1a;都是改变this的指向&#xff0c;传入的第一个参数都是绑定this的指向&#xff0c;在非严格模式中&#xff0c;如果第一个…

jenkins自动化部署安装

一、准备工作 1、安装jdk # 1、下载准备jdk包(也可以用docker安装) wget ... # 2、直接解压到,无需安装 unzip ...2、安装maven # 1、下载准备maven压缩包 wget ... # 2、直接解压,无需安装 unzip ... # 3、修改setting.xml&#xff0c;修改localRepository和MIRROR镜像地址…

大数据时代下的精准营销

在大数据时代&#xff0c;人们的信息越来越透明&#xff0c;留在网络上的各种数据也是企业进行营销的一个重要的生产要素。一直以来&#xff0c;营销的科学性正是因为运用了自然科学中一级互联网中的数据收集手段&#xff0c;严谨的记录、搜集和分析消费者的各项数据和日常生活…

STS4 New 安装Spring Bean Configuration File

背景介绍 在创建spring项目后&#xff0c;如果想想创建spring bean Configuration的时候&#xff0c;发下菜单没有这个选项&#xff0c;需要通过下载Spring Roo插件可满足该操作。 参考案例 参考地址&#xff1a; STS4 New 菜单没有Spring Bean Configuration File选项_SQZHA…

Android 进阶——图形显示系统之Choreographer监听VSync并提供回调接口详解(二)

文章目录 引言一、Choreographer 信号的分发处理二、Choreographer.FrameDisplayEventReceiver # onVsync方法向主线程发送Message消息三、主线程Looper处理消息并触发Choreographer.FrameDisplayEventReceiver.run方法四、Choreographer#doFrame处理回调1、Choreographer#doFr…

【Windows注册表内容详解】

Windows注册表内容详解 第一章节 注册表基础 一、什么是注册表 注册表是windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”&#xff0c;也可以说是一个非常巨大的树状分层结构的数据库系统。 注册表记录了用户安装在计算机上的软件和每个程…

企业网络小实验-MUX-Vlan(NAT)

路漫漫其修远兮&#xff0c;吾将上下而求索 直接上实验 实验说明 模拟公司的部门实验&#xff0c; &#xff08;1&#xff09;公司主机如图所示&#xff0c;配置DNS服务器&#xff0c;配置NAT地址转换&#xff08;使用easy-ip的形式&#xff09;访问外网。 &#xff08;2&…

【性能测试】Jenkins+Ant+Jmeter自动化框架的搭建思路

前言 前面讲了Jmeter在性能测试中的应用及扩展。随着测试的深入&#xff0c;我们发现在性能测试中也会遇到不少的重复工作。 比如某新兴业务处于上升阶段&#xff0c;需要在每个版本中&#xff0c;对某些新增接口进行性能测试&#xff0c;有时还需要在一天中的不同时段分别进行…

Lumion 和 Enscape 应该选择怎样的笔记本电脑?

Lumion 和 Enscape实时渲染对配置要求高&#xff0c;本地配置不够&#xff0c;如何快速解决&#xff1a; 本地普通电脑可一键申请高性能工作站&#xff0c;资产安全保障&#xff0c;供软件中心&#xff0c;各种软件插件一键获取&#xff0c;且即开即用&#xff0c;使用灵活&am…

23个react常见问题

1、setState 是异步还是同步&#xff1f; 合成事件中是异步 钩子函数中的是异步 原生事件中是同步 setTimeout中是同步 相关链接&#xff1a;你真的理解setState吗&#xff1f;&#xff1a; 2、聊聊 react16.4 的生命周期 图片 相关连接&#xff1a;React 生命周期 我对 Reac…

NFT Insider#105:The Sandbox即将参加韩国区块链周,YGG的声誉和进步(RAP)将引领玩家晋升到下一层级

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members(https://twitter.com/WHALEMembers)、BeepCrypto&#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周…

sql_mode详解

文章目录 一、sql_mode作用二、查询sql_mode三、mysql8默认的mode配置&#xff08;6个默认配置&#xff09;四、常见mode详细解释mysql8默认配置了的mode&#xff08;6个&#xff09;需要自己配置的mode&#xff08;4个&#xff09; 五、设置sql_mode&#xff08;一旦设置了&am…