当前位置: 首页 > news >正文

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十一讲)

这一期讲解lvgl中下拉框的基础使用,下拉列表允许用户从选项列表中选择一个值,下拉列表的选项表默认是关闭的,其中的选项可以是单个值或预定义文本。 当单击下拉列表后,其将创建一个列表,用户可以从中选择一个选项。 当用户选择了一个值后,该列表将被删除,下次点击会再重新生成。总而言之,下拉框控件是由按键与列表组成的控件。
使用GUI_Guider软件在工具栏将下拉框拖拽到界面中,以下是下拉框的默认样式:
在这里插入图片描述
在右侧的属性列表中,下拉框分为三个模块分别是main主模块、selected选择模块、list列表模块、scrollbar滚轮模块。

以下图片是main主模块的使用,可以分别配置控件的主颜色、字体颜色以及边框等设置。
在这里插入图片描述
以下图片是selected选择模块的使用,主要用来设置点击下拉框后,选中条的属性设置,分别有选中的边框粗细以及颜色的设置。
在这里插入图片描述
以下指的是列表的属性设置具体有列表背景颜色、边框大小以及字体设置,最后的高度指的是列表展开的长度设置。
在这里插入图片描述
以下是scrollbar滚轮模块的使用,主要用来设置右侧滚动条的颜色以及粗细。
在这里插入图片描述
以下是下拉框的相关生成代码:
//Write codes screen_1_ddlist_1
ui->screen_1_ddlist_1 = lv_dropdown_create(ui->screen_1);
//设置列表元素
lv_dropdown_set_options(ui->screen_1_ddlist_1, “list1\nlist2\nlist3”);
//设置列表位置以及大小
lv_obj_set_pos(ui->screen_1_ddlist_1, 144, 187);
lv_obj_set_size(ui->screen_1_ddlist_1, 168, 31);

//Write style for screen_1_ddlist_1, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
//设置文本颜色
lv_obj_set_style_text_color(ui->screen_1_ddlist_1, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
//设置文本字体
lv_obj_set_style_text_font(ui->screen_1_ddlist_1, &lv_font_SourceHanSerifSC_Regular_12, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置文本透明度
lv_obj_set_style_text_opa(ui->screen_1_ddlist_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置边框宽度
lv_obj_set_style_border_width(ui->screen_1_ddlist_1, 1, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置边框透明度
lv_obj_set_style_border_opa(ui->screen_1_ddlist_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置边框颜色
lv_obj_set_style_border_color(ui->screen_1_ddlist_1, lv_color_hex(0xe1e6ee), LV_PART_MAIN|LV_STATE_DEFAULT);
//设置边框类型
lv_obj_set_style_border_side(ui->screen_1_ddlist_1, LV_BORDER_SIDE_FULL, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置边框内边距
lv_obj_set_style_pad_top(ui->screen_1_ddlist_1, 8, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_left(ui->screen_1_ddlist_1, 6, LV_PART_MAIN|LV_STATE_DEFAULT);
lv_obj_set_style_pad_right(ui->screen_1_ddlist_1, 6, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置边框圆角半径
lv_obj_set_style_radius(ui->screen_1_ddlist_1, 4, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置背景透明度
lv_obj_set_style_bg_opa(ui->screen_1_ddlist_1, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置背景颜色
lv_obj_set_style_bg_color(ui->screen_1_ddlist_1, lv_color_hex(0x000000), LV_PART_MAIN|LV_STATE_DEFAULT);
//设置背景渐变方向
lv_obj_set_style_bg_grad_dir(ui->screen_1_ddlist_1, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);
//设置阴影宽度
lv_obj_set_style_shadow_width(ui->screen_1_ddlist_1, 0, LV_PART_MAIN|LV_STATE_DEFAULT);

//Write style state: LV_STATE_CHECKED for &style_screen_1_ddlist_1_extra_list_selected_checked
static lv_style_t style_screen_1_ddlist_1_extra_list_selected_checked;
ui_init_style(&style_screen_1_ddlist_1_extra_list_selected_checked);

//设置边框宽度
lv_style_set_border_width(&style_screen_1_ddlist_1_extra_list_selected_checked, 1);

//设置边框透明度

lv_style_set_border_opa(&style_screen_1_ddlist_1_extra_list_selected_checked, 255);
//设置边框颜色
lv_style_set_border_color(&style_screen_1_ddlist_1_extra_list_selected_checked, lv_color_hex(0xe1e6ee));
//设置边框类型
lv_style_set_border_side(&style_screen_1_ddlist_1_extra_list_selected_checked, LV_BORDER_SIDE_FULL);
//设置边框圆角半径
lv_style_set_radius(&style_screen_1_ddlist_1_extra_list_selected_checked, 3);
//设置背景透明度
lv_style_set_bg_opa(&style_screen_1_ddlist_1_extra_list_selected_checked, 255);
//设置背景颜色
lv_style_set_bg_color(&style_screen_1_ddlist_1_extra_list_selected_checked, lv_color_hex(0x00a1b5));
//设置背景渐变方向
lv_style_set_bg_grad_dir(&style_screen_1_ddlist_1_extra_list_selected_checked, LV_GRAD_DIR_NONE);
//将样式应用于下拉列表的选中项
lv_obj_add_style(lv_dropdown_get_list(ui->screen_1_ddlist_1), &style_screen_1_ddlist_1_extra_list_selected_checked, LV_PART_SELECTED|LV_STATE_CHECKED);

//Write style state: LV_STATE_DEFAULT for &style_screen_1_ddlist_1_extra_list_main_default
static lv_style_t style_screen_1_ddlist_1_extra_list_main_default;
ui_init_style(&style_screen_1_ddlist_1_extra_list_main_default);
//设置最大高度

lv_style_set_max_height(&style_screen_1_ddlist_1_extra_list_main_default, 90);
//设置文本颜色
lv_style_set_text_color(&style_screen_1_ddlist_1_extra_list_main_default, lv_color_hex(0x0D3055));
//设置字体类型
lv_style_set_text_font(&style_screen_1_ddlist_1_extra_list_main_default, &lv_font_montserratMedium_12);
//设置文本透明度
lv_style_set_text_opa(&style_screen_1_ddlist_1_extra_list_main_default, 255);

//设置边框宽度
lv_style_set_border_width(&style_screen_1_ddlist_1_extra_list_main_default, 1);
//设置边框透明度
lv_style_set_border_opa(&style_screen_1_ddlist_1_extra_list_main_default, 255);
//设置边框颜色
lv_style_set_border_color(&style_screen_1_ddlist_1_extra_list_main_default, lv_color_hex(0xe1e6ee));
//设置边框类型
lv_style_set_border_side(&style_screen_1_ddlist_1_extra_list_main_default, LV_BORDER_SIDE_FULL);
//设置圆角半径
lv_style_set_radius(&style_screen_1_ddlist_1_extra_list_main_default, 3);
//设置背景透明度
lv_style_set_bg_opa(&style_screen_1_ddlist_1_extra_list_main_default, 255);
//设置背景颜色
lv_style_set_bg_color(&style_screen_1_ddlist_1_extra_list_main_default, lv_color_hex(0xffffff));
//设置背景渐变色方向
lv_style_set_bg_grad_dir(&style_screen_1_ddlist_1_extra_list_main_default, LV_GRAD_DIR_NONE);
//将样式应用于下拉列表的主部分
lv_obj_add_style(lv_dropdown_get_list(ui->screen_1_ddlist_1), &style_screen_1_ddlist_1_extra_list_main_default, LV_PART_MAIN|LV_STATE_DEFAULT);

//Write style state: LV_STATE_DEFAULT for &style_screen_1_ddlist_1_extra_list_scrollbar_default
static lv_style_t style_screen_1_ddlist_1_extra_list_scrollbar_default;
ui_init_style(&style_screen_1_ddlist_1_extra_list_scrollbar_default);
//设置圆角半径

lv_style_set_radius(&style_screen_1_ddlist_1_extra_list_scrollbar_default, 3);
//设置背景透明度
lv_style_set_bg_opa(&style_screen_1_ddlist_1_extra_list_scrollbar_default, 255);
//设置背景颜色
lv_style_set_bg_color(&style_screen_1_ddlist_1_extra_list_scrollbar_default, lv_color_hex(0x00ff00));

//设置渐变色方向	lv_style_set_bg_grad_dir(&style_screen_1_ddlist_1_extra_list_scrollbar_default, LV_GRAD_DIR_NONE);

//将样式应用到滚动条
lv_obj_add_style(lv_dropdown_get_list(ui->screen_1_ddlist_1), &style_screen_1_ddlist_1_extra_list_scrollbar_default, LV_PART_SCROLLBAR|LV_STATE_DEFAULT);

下一期讲解下拉框的回调以及信号。
本文章由威三学社出品
对课程感兴趣可以私信联系

相关文章:

  • 人工智能100问☞第15问:人工智能的常见分类方式有哪些?
  • 2025年软件工程与数据挖掘国际会议(SEDM 2025)
  • Three.js和WebGL区别、应用建议
  • 大模型在宫颈癌诊疗全流程预测与应用研究报告
  • 【免费试用】LattePanda Mu x86 计算模块套件,专为嵌入式开发、边缘计算与 AI 模型部署设计
  • [论文阅读]MCP Guardian: A Security-First Layer for Safeguarding MCP-Based AI System
  • VMware搭建ubuntu保姆级教程
  • NGINX `ngx_http_browser_module` 深度解析与实战
  • 数据中台架构设计
  • 分布式开发:数字时代的高性能架构革命-为什么要用分布式?优雅草卓伊凡
  • IP-Adapter
  • Caffeine快速入门
  • R语言助力森林生态研究:从数据处理到群落稳定性分析的完整流程,结合机器学习与案例写作
  • Kali Linux 安装 Rust 环境简明教程
  • js获取uniapp获取webview内容高度
  • 从零实战:在Xilinx Zynq PS端移植VxWorks 6.9系统
  • uniapp 全局混入:监听路由变化,路由变化即执行
  • oceanbase不兼容SqlSugarCore的问题
  • 【25软考网工】第五章(7)路由协议、静态与默认路由、路由协议分类
  • 电动加长杆金属硬密封法兰式蝶阀泄漏等级解析:水、蒸汽、油品介质的可靠选择-耀圣
  • 外交部:印巴都表示不希望局势升级,望双方都能保持冷静克制
  • 央行宣布优化两项支持资本市场的货币政策工具
  • 胡祥|人工智能时代:文艺评论何为?
  • 北美票房|“雷霆”开画票房比“美队4”低,但各方都能接受
  • 经济日报:合力推进民企与毕业生双向奔赴
  • 巴菲特第60次股东大会开场点赞库克:他为伯克希尔赚的钱比我还多