目录

1. Parts

1.1 按钮状态

1.2 列表状态

2. 设置

2.1 设置选项

2.2 设置方向

2.3 设置符号

2.4 设置字符串

2.5 手动打开或关闭列表

2.6 设置高亮效果

3. 样式

3.1 设置列表高度

3.2 改变按钮状态时圆角弧度

3.3 修改字符串颜色

3.4 修改字符串对齐方式

3.5 修改列表中的滚动条颜色

3.6 修改列表的选中颜色


下拉列表由lv_dropdown_create创建。

    dropdown = lv_dropdown_create(lv_scr_act());lv_obj_align(dropdown, LV_ALIGN_CENTER, 0, 0);

1. Parts

下拉列表分为2个状态:按钮状态和列表状态。上图中就是列表时的状态,下图是按钮时的状态。

1.1 按钮状态

按钮状态下有2个Parts:

LV_PART_MAIN  - 按钮的背景。 对其上面的文本使用典型的背景属性和文本属性。

LV_PART_INDICATOR - 对应上图中的箭头符号,可以是图像或文本。

1.2 列表状态

列表状态下有3个Parts:

LV_PART_MAIN - 列表本身。

LV_PART_SCROLLBAR - 列表滚动条的背景、边框、阴影属性和宽度以及右侧间距的右侧填充。

LV_PART_SELECTED - 当前按下、选中或按下+选中的选项。

下拉列表默认是按钮状态,所以不能用之前简单的方式修改列表状态下的样式。

可以通过下面的方法实现:

a. 添加LV_EVENT_PRESSED事件回调函数

lv_obj_add_event_cb(dropdown, dropdown_event_pressed_cb, LV_EVENT_PRESSED, NULL);

b. 在事件处理回调函数中获取到列表的指针

lv_obj_t* list = lv_dropdown_get_list(dropdown);

c. 判断list是否为NULL表明是否在列表状态

if (list != NULL)
{lv_obj_set_style_text_color(list, lv_color_hex(0xFF0000), LV_PART_MAIN);
}

注意,这里的对象是list,不是dropdown。

2. 设置

2.1 设置选项

下拉列表默认的选项是Option1、Option2、Option3,可以通过函数lv_dropdown_set_options设置选项。

void lv_dropdown_set_options(lv_obj_t * obj, const char * options)

参数options设置的选项之间需要使用 \n 分隔开来,这部分参数会保存在下拉列表对象的空间中。

lv_dropdown_set_options(dropdown, "First\nSecond\nThird");

可以通过函数lv_dropdown_add_option添加选项。

void lv_dropdown_add_option(lv_obj_t * obj, const char * option, uint32_t pos)

pos表示索引值,注意option最好不要有\n,否则会插入多个option,但是总数只是会加1。

lv_dropdown_add_option(dropdown, "Insert1", 1);

为了节省RAM,可以使用函数lv_dropdown_set_static_options通过静态字符串设置选项,注意才采用这种方式,不能使用lv_dropdown_add_option添加选项。

可以使用 lv_dropdown_set_selected 手动选择一个选项

void lv_dropdown_set_selected(lv_obj_t * obj, uint16_t sel_opt)

其中 sel_opt 是要选择的选项的索引。

通过lv_dropdown_get_selected获取选中选项的索引值,通过lv_dropdown_get_selected_str获取选中选项的字符串值。

可以通过lv_dropdown_clear_options清楚所有选项。

void lv_dropdown_clear_options(lv_obj_t * obj)

函数lv_dropdown_get_options获取选项的字符串,和lv_dropdown_set_options的设置对应。

函数lv_dropdown_get_option_cnt则可以获取选项的数量。

函数lv_dropdown_get_option_index获取对应选项对应的索引值。

2.2 设置方向

下拉列表的默认方向是向下展开列表,可以通过函数lv_dropdown_set_dir更改方向。

void lv_dropdown_set_dir(lv_obj_t * obj, lv_dir_t dir)

参数dir的设置值有

LV_DIR_LEFT:

LV_DIR_RIGHT:

LV_DIR_TOP:

LV_DIR_BOTTOM:

可以通过函数lv_dropdown_get_dir获取当前设置的方向。

2.3 设置符号

默认的符号是LV_SYMBOL_DOWN,可以通过lv_dropdown_set_symbol改变符号。

void lv_dropdown_set_symbol(lv_obj_t * obj, const void * symbol)

例如:

lv_dropdown_set_dir(dropdown, LV_DIR_LEFT);
lv_dropdown_set_symbol(dropdown, LV_SYMBOL_LEFT);

可以通过函数lv_dropdown_get_symbol获取设置的符号。

2.4 设置字符串

通过lv_dropdown_set_text设置按钮状态时显示的内容。

void lv_dropdown_set_text(lv_obj_t * obj, const char * txt)

注意,这个字符串内容不需要是列表状态中的字符串( 如果文本为“NULL”,则当前选项显示在按钮上)。

lv_dropdown_set_text(dropdown, "test");

2.5 手动打开或关闭列表

使用 lv_dropdown_open或lv_dropdown_close手动打开或关闭列表。

2.6 设置高亮效果

列表状态时选中时是默认打开高亮的,可以 通过函数lv_dropdown_set_selected_highlight关闭高亮。

void lv_dropdown_set_selected_highlight(lv_obj_t * obj, bool en)

下图是关闭高亮的效果:

可以通过函数lv_dropdown_get_selected_highlight获取是否高亮。

3. 样式

3.1 设置列表高度

通过函数lv_obj_set_style_max_height设置,例如:

lv_obj_set_style_max_height(list, 50, LV_PART_MAIN);

3.2 改变按钮状态时圆角弧度

lv_obj_set_style_radius(dropdown, LV_PCT(20), LV_PART_MAIN);

3.3 修改字符串颜色

lv_obj_set_style_text_color(dropdown, lv_color_hex(0xFF0000), LV_PART_MAIN);

注意这里改变的颜色包括符号,应该是bug。下面的代码是只改符号的颜色:

lv_obj_set_style_text_color(dropdown, lv_color_hex(0xFF0000), LV_PART_INDICATOR);

3.4 修改字符串对齐方式

注意按钮状态下修改无效,只能改列表状态下的字符串。

lv_obj_set_style_text_align(list, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN);

3.5 修改列表中的滚动条颜色

lv_obj_set_style_bg_color(list, lv_color_hex(0xFF0000), LV_PART_SCROLLBAR);

3.6 修改列表的选中颜色

lv_obj_set_style_bg_color(list, lv_color_hex(0xFF0000), LV_PART_SELECTED);

可以看到只是选中的时候颜色变成了红色。蓝色部分没研究到哪里可以改动,可能只能通过主题的 方式修改。

LVGL学习笔记19 - 下拉列表dropdown相关推荐

  1. Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

    Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...

  2. springmvc学习笔记(19)-RESTful支持

    springmvc学习笔记(19)-RESTful支持 标签: springmvc springmvc学习笔记19-RESTful支持 概念 REST的样例 controller REST方法的前端控 ...

  3. 区块链学习笔记19——ETH难度调整

    区块链学习笔记19--ETH难度调整 学习视频:北京大学肖臻老师<区块链技术与应用> 笔记参考:北京大学肖臻老师<区块链技术与应用>公开课系列笔记--目录导航页 前面学过,比特 ...

  4. Python学习笔记19:列表 III

    Python学习笔记19:列表 III 其实这篇笔记标题应该是列表扩展,从列表开始,将涵盖Python中的序列容器. 关于列表的基础知识,可以看我的前两篇文章: Python学习笔记1:列表. Pyt ...

  5. Linux 学习笔记19 信号

    Linux 学习笔记19 信号 信号 信号概述 为什么要是使用信号--为了实现进程的有序退出 信号是进程运行过程中,由自身产生或者由进程外部发来的消息.信号是硬件中断的软件模拟(软中断) signal ...

  6. 影像组学视频学习笔记(19)-数据标准化、归一化极简概述、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(19)主要介绍: 数据的标准化.归一化 为什么要进行标准化.归一化? 机器学习算法的要求 便于横向比较 # 标准化 (影像组学中最常用) ...

  7. TMS320F280049C 学习笔记19 可配置逻辑块 (CLB) 软件配置

    文章目录 CLB tool 简介 CLB配置过程概述 软件安装 GNU Compiler Install the Simulation Viewer 使用CLB tool 导入空CLB工程 更新变量路 ...

  8. opencv学习笔记19:图像金字塔和图像拉普拉斯金字塔 (用于图像放大和缩小)

    图像金字塔原理 图像金字塔:只不同分辨率,不同尺寸子图构成的集合. 取样 向下取样:有一个图像G0,对它重新采样,得到分辨率小些的G1,以此类推. 向上取样:有一个图像G3,然后变成像素更多的G2,以 ...

  9. 学习笔记(19):Python网络编程并发编程-互斥锁

    立即学习:https://edu.csdn.net/course/play/24458/296430?utm_source=blogtoedu 1.互斥锁: 多进程间的内存是相互隔离的,因此其数据也是 ...

最新文章

  1. 程序员自学到底有没有用?网友们吵翻了...
  2. docker-3-常用命令(上)
  3. Gradle与project(三)
  4. 《复杂》读书笔记(part1)--一些思想是由简单的思想组合而成,我称此为复杂
  5. tornado服务器动态文件,tornado 实现服务器消息推送功能
  6. uniapp增加百度统计代码(h5)
  7. Leetcode: 二叉树的后序遍历
  8. 简书优秀IT专栏作者推荐
  9. MAP地图报错Unable to preventDefault inside passive event listener invocation.
  10. C++ Primer 5th Edition(英文版)kindle.mobi
  11. simulink 菜单栏 不见了
  12. python pitfall (陷阱)--不同平台os模块文件名排序
  13. 深度学习实战(六):从零开始实现表情识别
  14. OJ每日一练——温度换算
  15. natapp邀请码,新用户购买域名可以享受9折优惠
  16. Elias Kiritsis《String Theory in a Nutshell》(埃利亚斯·基里西斯《简明弦论》)中文目录
  17. 关于上财陈畅的俄罗斯方块的学习
  18. Cell Biolabs丨艾美捷丨L-氨基酸检测试剂盒
  19. 探探引流一天加粉1000+微商引流方法讨论
  20. 小白也能学会的Android应用分类订阅功能(新闻个性化分类订阅),学不会你打我!

热门文章

  1. HTML 里面的图片怎么移动位置?
  2. 机遇,看了后悔不看更后悔!
  3. 假期无聊?这几个网站程序员偷偷看
  4. 思科CCNA网工零基础入门必学 VLAN间路由快速完成小型企业网的搭建
  5. C#模拟PrtScn实现截屏预备知识--剪贴板操作
  6. 金小指智能营销软件,策划案例丨精准
  7. SEED-DVS6446 FAQs归纳整理
  8. 直播 | RT-Thread 4.0.4 版本代码 Release啦!一起来参与新特性解读会吧~
  9. Coursera 吴恩达DeepLearning.AI 第五课 sequence model 序列模型 第二周 Operations on word vectors - v2
  10. windows工具:设置网络IP,便于固定IP切换