【LVGL-下拉列表部件 lv_dropdown】

news2024/9/22 11:27:54

LVGL-下拉列表部件 lv_dropdown

  • ■ LVGL-下拉列表部件 lv_dropdown
    • ■ 下拉列表部件的组成
    • ■ 添加选项
    • ■ 获取当前选中的选项
    • ■ 设置列表展开方向
    • ■ 设置下拉列表图标
    • ■ 设置列表常显文本
    • ■ 打开、开闭下拉列表
    • ■ 下拉列表部件的 API 函数

■ LVGL-下拉列表部件 lv_dropdown

在这里插入图片描述

■ 下拉列表部件的组成

按钮部分:
① LV_PART_MAIN:按钮的主体背景;
② LV_PART_INDICATOR:指示器,例如上图向下的箭头。
列表部分:
③ LV_PART_SELECTED:当前选中的选项;
④ LV_PART_SCROLLBAR:滚动条;
⑤ LV_PART_MAIN:列表主体背景。 注意: 用户需要设置上述组成部分的样式,需要先将按钮或列表相关的部分获取回来。

■ 添加选项

lv_dropdown_set_options(dropdown, "First \n Second \n Third");
lv_dropdown_add_option(dropdown, "New option", pos);  //其形参 pos 表示添加的位置, 注意: 0 表示列表最上面的位置,
lv_dropdown_set_options_static (dropdown, options); //添加的是静态选项,在这种情况下,用户不能再使用lv_dropdown_add_option
void lv_mainstart(void)
{
	/* 创建一个下拉列表 */
	lv_obj_t* lv_ddlist1 = lv_dropdown_create(lv_scr_act());
	/* 方法一 添加多个选项(动态) */
	lv_dropdown_set_options(lv_ddlist1,"a\nb\nc\nd"); 
	lv_obj_set_pos(lv_ddlist1,100, 100);
	/* 默认显示的选项 */
	lv_dropdown_set_selected(lv_ddlist1, 0);


	lv_obj_t* lv_ddlist2 = lv_dropdown_create(lv_scr_act());
	/* 方法二 添加单个选项 */
	lv_dropdown_add_option(lv_ddlist2,"0", 0);
	lv_dropdown_add_option(lv_ddlist2, "1", 1);
	lv_dropdown_add_option(lv_ddlist2, "2", 2);
	lv_dropdown_add_option(lv_ddlist2, "3", 3);
	
	/* 默认显示的选项 */
	lv_dropdown_set_selected(lv_ddlist2, 1);
	lv_obj_set_pos(lv_ddlist2, 300, 100);

■ 获取当前选中的选项

当用户选中所需的选项之后,如果没有任何反馈,这将无法和其他板块进行交互,因此, 我们需要在触发的事件回调中获取当前选中的选项索引和文本,

lv_dropdown_get_selected(dropdown)/* 获取选中的选项索引*/
lv_dropdown_get_selected_str(dropdown, buf, buf_size)/* 获取选项字符串,保存到指定的 buf 中。

■ 设置列表展开方向

lv_dropdown_set_dir(dropdown, LV_DIR_LEFT/RIGHT/UP/BOTTOM) /* 设置展开方向 */
void lv_mainstart(void)
{
	/* 创建一个下拉列表 */
	lv_obj_t* lv_ddlist1 = lv_dropdown_create(lv_scr_act());
	
	/*添加下拉列表项 */
	lv_dropdown_set_options(lv_ddlist1,"a\nb\nc\nd"); 
	lv_obj_set_pos(lv_ddlist1,100, 100);
	
	/* 默认显示的下拉列表项 */
	lv_dropdown_set_selected(lv_ddlist1, 0);
	lv_obj_t* lv_ddlist2 =lv_dropdown_create(lv_scr_act());
	lv_dropdown_set_dir(lv_ddlist2,LV_DIR_LEFT); /* 设置为左侧展开 */
	
	/*添加下拉列表项 */
	lv_dropdown_add_option(lv_ddlist2, "0", 0);
	lv_dropdown_add_option(lv_ddlist2, "1", 1);
	lv_dropdown_add_option(lv_ddlist2, "2", 2);
	lv_dropdown_add_option(lv_ddlist2, "3", 3);
	
	/* 默认显示的下拉列表项 */
	lv_dropdown_set_selected(lv_ddlist2, 1);
	lv_obj_set_pos(lv_ddlist2, 300, 100);

在这里插入图片描述

■ 设置下拉列表图标

lv_dropdown_set_symbol(dropdown, LV_SYMBOL_…) /* 设置图标 */

在这里插入图片描述

■ 设置列表常显文本

lv_dropdown_set_text 函数,
在默认情况下,当用户选中某个选项后,该选项的文本会更新到列表的头部,示意图如下:
在这里插入图片描述

lv_mainstart(void)
{
	/* 创建一个下拉列表 */
	lv_obj_t* lv_ddlist1 =lv_dropdown_create(lv_scr_act());
	lv_dropdown_set_text(lv_ddlist1, "dropdown");
	
	/*添加下拉列表项 */
	lv_dropdown_set_options(lv_ddlist1,"a\nb\nc\nd"); lv_obj_set_pos(lv_ddlist1,100, 100);
	/* 默认显示哪一个下拉列表项 */
	lv_dropdown_set_selected(lv_ddlist1, 0);
	
	
	lv_obj_t* lv_ddlist2 =lv_dropdown_create(lv_scr_act());
	lv_dropdown_set_dir(lv_ddlist2,LV_DIR_LEFT);  /* 设置下拉方向 */
	/*添加下拉列表项 */
	lv_dropdown_add_option(lv_ddlist2, "0", 0);
	lv_dropdown_add_option(lv_ddlist2, "1", 1);
	lv_dropdown_add_option(lv_ddlist2, "2", 2);
	lv_dropdown_add_option(lv_ddlist2, "3", 3);
	/* 默认显示哪一个下拉列表项 */
	lv_dropdown_set_selected(lv_ddlist
}

在上述源码中,我们调用了 lv_dropdown_set_tex函数,把第一个列表( lv_ddlist1)的头部文本固定为“ dropdown”
在这里插入图片描述

■ 打开、开闭下拉列表

当用户需要直接打开或者关闭下拉列表时,可以直接调用以下函数

lv_dropdown_open(dropdown) /* 打开下拉列表 */
lv_dropdown_close(dropdown) /* 关闭下拉列表 */

■ 下拉列表部件的 API 函数

lv_dropdown_create() 创建下拉列表
lv_dropdown_set_text() 设置下拉列表按钮的文本(常显文本)
lv_dropdown_set_options() 添加选项(动态)
lv_dropdown_set_options_static() 添加选项(静态)
lv_dropdown_add_option() 添加单个选项
lv_dropdown_clear_options() 清除所有选项
lv_dropdown_set_selected() 设置当前所选项
lv_dropdown_set_dir() 设置展开方向
lv_dropdown_set_symbol() 设置图标
lv_dropdown_set_selected_highlight()设置当前选中的选项是否高亮
lv_dropdown_get_list() 获取下拉列表,以设置样式或进行其他修改
lv_dropdown_get_text() 获取下拉列表按钮的文本
lv_dropdown_get_options() 获取下拉列表的选项
lv_dropdown_get_selected() 获取所选选项的索引
lv_dropdown_get_option_cnt() 获取选项的总数
lv_dropdown_get_selected_str() 获取当前选中的选项文本
lv_dropdown_get_symbol() 获取图标
lv_dropdown_get_selected_highlight()判断当前选中的选项是否高亮
lv_dropdown_get_dir() 获取展开方向
lv_dropdown_open() 打开下拉列表
lv_dropdown_close() 关闭下拉列表

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

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

相关文章

STM32学习记录-05 -3-TIM输入捕获

1 输入捕获简介 IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用…

FME批处理:WorkspaceRunner转换器

1、创建一个待处理工程 注意: Reader设置: Writer设置: 2、创建另外一个**批处理工程**,加入workspaceRunner并设置参数 workspaceRunner设置 directory and file pathnames设置

认知杂谈23

今天分享 有人说的一段争议性的话 I I 《忙碌不停,成长迷失》 现代生活啊,就跟一场一直转个不停的旋转木马似的。你每天都被各种小事儿缠得死死的,从大清早一睁开眼,一直到晚上要睡觉了,几乎就找不到一点能停下来喘…

BC156 牛牛的数组匹配(c语言)

1./描述 //牛牛刚学会数组不久,他拿到两个数组 a 和 b,询问 b 的哪一段连续子数组之和与数组 a 之和最接近。 //如果有多个子数组之和同样接近,输出起始点最靠左的数组。 //输入描述: //第一行输入两个正整数 n 和 m ,…

NLP从零开始------12. 关于前十一章补充(英文分词)

相较于基础篇章,这一部分相较于基础篇减少了很多算法推导,多了很多代码实现。 1.英文词规范化 英文词规范化一般分为标准化缩写,大小写相互转化,动词目态转化等。 1.1 大小写折叠 大小写折叠( casefolding) 是将所有的英文大写字母转化成小…

开发高质量PDF应用的不二选择:PdfiumViewer库详细解析

1. PdfiumViewer库简介 PdfiumViewer是一款基于谷歌开源PDF渲染引擎PDFium的.NET库,主要用于在Windows应用程序中显示和处理PDF文档。PdfiumViewer提供了多种API和控件,使得开发者可以轻松地将PDF文档嵌入到其应用程序中。同时,PdfiumViewer…

利用 OCR 和强大的 GPT-4o 迷你模型对收据进行信息提取

在本文中,我将向您展示如何从收据中提取信息,并提供收据的简单图像。首先,我们将利用 OCR 从收据中提取信息。然后,此信息将发送到 GPT-4o 迷你模型进行信息提取。我在这个项目中的目标是开发一个应用程序,只需拍摄收据…

【排序算法】八大排序(下)(c语言实现)(附源码)

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:算法 目录 前言 测试数据和交换函数 五、堆排序 六、快速排序 1.hoare版本 2.挖坑法 3.lomoto版本 4.快速排序的非递归实现 5.快速排序性能总结 七、归…

手机mkv转换mp4:轻松实现视频格式兼容

如今手机已成为我们日常生活中不可或缺的伴侣,而视频文件则是我们享受娱乐、获取信息的重要来源。然而,由于不同设备和平台对视频格式的支持各有不同,我们有时会遇到无法在手机上播放某些视频文件的问题。 mkv是一种常见的视频格式&#xff…

android使用YOLOV8数据返回到JAVA方法(JAVA)

一、下载扩展文件(最耗时,所以放第一步) 1.opencv下载 1)官网:Releases - OpenCV 2)下载最新版本的android包 2.NCNN下载 1)NCNN下载地址(20220420版本):https://github.com/Tencent/ncnn/releases/download/20220420/ncnn-20220420-android-vulkan.zip 3.在你的…

倍内菲新品发布揭示宠物营养新纪元,引领行业保驾护航

2024年8月21日,伴随着第26届亚洲宠物展览会的揭幕,宠物主粮领军品牌倍内菲在展会首日举行了一场意义深远的新品发布会,重磅推出两款革命性新品——鲜肉烘焙系列与至护烘焙系列,不仅是对宠物进阶营养需求的深刻洞察,更是…

【信创】统信UOS打包工具介绍与使用教程

原文链接:【信创】统信UOS打包工具介绍与使用教程 Hello,大家好啊!今天给大家带来一篇关于统信UOS桌面操作系统上的UOS打包工具介绍与使用的文章。UOS打包工具是一款专为统信UOS系统开发的应用程序打包工具,旨在帮助开发者轻松创建…

Vue.js:解锁前端开发的快速入门之旅

标题:《Vue.js:解锁前端开发的快速入门之旅》 在日新月异的Web开发领域中,Vue.js以其简洁、灵活和高效的特点,迅速成为前端开发者们的宠儿。对于初学者而言,Vue.js不仅是一个易于上手的框架,更是开启现代前…

python动画:颜色(color)能接受的[manim_colors]

Manim_colors指的是Manim动画引擎中全局命名空间中包含的一组颜色。这些颜色构成了Manim默认的颜色空间。通过使用manim_colors,动画师和创作者可以轻松地访问和应用各种颜色到他们的动画中,而无需单独定义它们。这个特性简化了动画制作的过程&#xff0…

张宇线代9讲啃不动,换李永乐来得及吗?

快9月了,很多同学在后台留言说,跟宇哥的线代,但是啃不动,接下来该怎么办,换李永乐来的急吗? 让我来认真分析一下! 张宇线代9讲为什么这么难啃? 25版张宇线代改版,线代的…

二叉树【2.5】代码专项

目录 醍醐灌顶——node* root 和node* &root作为参数的区别 return value: 写一个前序遍历的(使用指针) 中序遍历,只改动了preorder,只调换了一行 后序 层序(使用bfs),新建队…

如何保证支付服务和交易服务订单状态一致?

消息传给消费者,消费者自己弄丢 业务幂等 所有的业务都应该保证幂等性, 如何保障业务幂等性 非幂等业务表单重复提交,在进入表单之前生成唯一标识,未token,携带token进行请求,执行表单提交,把…

unoredered_mapunordered_set封装

各层封装关系 封装时细节/tips Rfr Ptr用来constiterator //HTIterator 模板 template<class K, class T, class Ptr, class Rfr, class KeyOfT, class Hash> class HTIterator//普通Iterator类 & const_iterator类 typedef HTIterator<K, T, T*, T&, KeyOfT…

芯片中的电源VDD和地VSS

一、原理图中的电源和地符号 在绘制原理图的时候您应该会发现某个芯片上有VBAT VDD VSS VDDA VSSA那么他们都是什么意思呢&#xff0c;分别代表什么&#xff1f; 二、与常说的VCC的区别 可以看到VSS是表示GND 数字和模拟是分开的默认是数字&#xff0c;VDD表示电源&#xff0c;…

DC-DC开关电源稳压电路设计——7- 40V转换5V和3.3V

本篇文章记录分享DC-DC开关电源稳压&#xff08;7-40V转换5V和3.3V&#xff09;电路设计的思路及原理图。 目录 一、电路稳压原理图 二、开关稳压芯片 1、BUCK降压电路 2.LM2596 &#xff08;1&#xff09;、LM2596简介 &#xff08;2&#xff09;、LM2596原理 1. 基…