使用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);

下一期講解下拉框的回調以及信號。
本文章由威三學社出品
對課程感興趣可以私信聯系

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78877.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78877.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78877.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【神經網絡與深度學習】VAE 在解碼前進行重參數化

在 VAE 中,解碼之前進行重參數化主要有以下幾個重要原因: 可微分性 在深度學習里,模型是通過反向傳播算法來學習的,而這需要計算梯度。若直接從潛在變量的分布 (q_{\theta}(z|x))(由編碼器輸出的均值 (\mu) 和方差 (…

BBDM學習筆記

1. configs 1.1 LBBDM: Latent BBDM [readme]

mysql主從復制搭建,并基于?Keepalived + VIP實現高可用

以下是基于 ?Keepalived VIP? 實現 MySQL 主從復制高可用的詳細步驟,涵蓋主從復制搭建與故障自動切換: 一、MySQL 主從復制搭建(基礎步驟回顧) 1. ?主庫(Master)配置? 修改配置文件? /etc/my.cnf&…

CD36.【C++ Dev】STL庫的string的使用 (下)

目錄 1.reserve函數(不是reverse) 代碼示例 2.resize 代碼示例 3.reserve和resize的區別 4.shrink_to_fit 代碼示例 5.與C語言的配合的接口函數: c_str 代碼示例 6.rfind 知識回顧:find函數 rfind 代碼示例 練習題: 字符串最后一個單詞的長度 代碼 提交結果 ?…

STM32的網絡天氣時鐘項目

一、項目概述與硬件架構 1.1 核心功能 本智能天氣時鐘系統集成了實時天氣獲取、網絡時間同步、環境監測和低功耗管理四大核心功能: 網絡數據獲取: 通過ESP8266 WiFi模塊連接心知天氣API(每小時更新)獲取北京標準時間服務器的時…

FPGA DDR4多通道管理控制器設計

DDR4控制器一般采用自帶的MIG控制器,用戶控制主要是基于MIG IP核進行設計 實際工程項目中可能只掛載了一組DDR,但是用戶數據可能有很多種,用戶通過給每種數據劃分特定地址進行存儲,如何實現靈活管理成為設計的關鍵 為了方便后端數…

低代碼 x AI,解鎖數智化應用的創新引擎

AI 智能體開發指南 隨著全球信息化浪潮的持續推進,數字化、智能化轉型已成為企業發展的必經之路。在這個變革的時代,企業面臨著前所未有的挑戰與機遇。一方面,市場環境瞬息萬變,企業需要快速響應并調整業務模式;另一方…

【Spring Boot 注解】@Configuration與@AutoConfiguration

文章目錄 Configuration與AutoConfiguration一、Configuration二、AutoConfiguration Configuration與AutoConfiguration 一、Configuration 這是最常用的 Spring 注解之一,表示當前類是一個 配置類,可以定義 Bean 方法,等效于傳統的 XML 配…

arXiv論文 MALOnt: An Ontology for Malware Threat Intelligence

文章講惡意軟件威脅情報本體。 作者信息 作者是老美的,單位是倫斯勒理工學院,文章是2020年的預印本,不知道后來發表在哪里(沒搜到,或許作者懶得投稿,也可能是改了標題)。 中心思想 介紹開源…

【存儲管理—動態不等長存儲資源分配算法】

文章目錄 一、實驗目的二、實驗內容與設計思想實驗內容設計思路 三、實驗代碼實現四、總結 一、實驗目的 理解動態異長存儲分區資源管理,掌握所需數據結構和管理程序,了解各種存儲分配算法的優點和缺點。 二、實驗內容與設計思想 實驗內容 1.分析uni…

快速上手 Docker:從入門到安裝的簡易指南(Mac、Windows、Ubuntu)

PS:筆者在五一剛回來一直搞Docker部署AI項目,發現從開發環境遷移到生成環境時,Docker非常好用。但真的有一定上手難度,推薦讀者多自己嘗試踩踩坑。 本篇幅有限,使用與修改另起篇幅。 一、Docker是什么 #1. Docker是什…

LabVIEW高沖擊加速度校準系統

在國防科技領域,高 g 值加速度傳感器廣泛應用于先進兵器研制,如深侵徹系統、精確打擊彈藥及鉆地彈藥等。其性能指標直接影響研究結果的準確性與可靠性,因此對該傳感器進行定期校準意義重大。高沖擊加速度校準系統具備多方面功能,適…

FPGA 純邏輯NVME raid0 IP核

系統采用XCZU19EG搭載4個三星990 PRO SSD 單盤讀寫不低于3GB/s 4盤總帶寬不低于12GB/s

GStreamer開發筆記(三):測試gstreamer/v4l2+sdl2/v4l2+QtOpengl打攝像頭延遲和內存

若該文為原創文章,轉載請注明原文出處 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/147714800 長沙紅胖子Qt(長沙創微智科)博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、O…

CATIA高效工作指南——零件建模篇(二)

一、PowerCopy特征復用技術 1.1 智能特征封裝 通過??幾何圖形集(Geometrical Set)??構建參數化特征組,將關聯的草圖、曲面、實體等元素進行邏輯封裝。操作流程如下: 創建新幾何圖形集并完成特征建模激活PowerCopy命令,選擇目標幾何集定…

CentOS 7 安裝OpenJDK 17 JRE

CentOS 7 自帶的java 版本為:java version "1.8.0_311", 有些軟件的運行需要更高的java版本。CentOS 7 自帶的默認倉庫里 沒有 OpenJDK 17,但是 Adoptium 項目(前身 AdoptOpenJDK)提供了穩定的 OpenJDK 17 版…

【c++】 我的世界

太久沒更新小游戲了 給個贊和收藏吧&#xff0c;求求了 要游戲的請私聊我 #include <iostream> #include <vector>// 定義世界大小 const int WORLD_WIDTH 20; const int WORLD_HEIGHT 10;// 定義方塊類型 enum BlockType {AIR,GRASS,DIRT,STONE };// 定義世界…

angular的cdk組件庫

目錄 一、虛擬滾動 一、虛擬滾動 <!-- itemSize相當于每個項目的高度為30px --><!-- 需要給虛擬滾動設置寬高&#xff0c;否則無法正常顯示 --> <cdk-virtual-scroll-viewport [itemSize]"40" class"view_scroll"><div class"m…

視頻編解碼學習三之顯示器

整理自&#xff1a;顯示器_百度百科&#xff0c;觸摸屏_百度百科,百度安全驗證 分為陰極射線管顯示器&#xff08;CRT&#xff09;&#xff0c;等離子顯示器PDP&#xff0c;液晶顯示器LCD 液晶顯示器的組成。一般來說&#xff0c;液晶顯示器由以下幾個部分組成&#xff1a; […

尚硅谷-硅谷甄選項目記錄

一、Vue3 1 基礎配置 1.1 路徑別名 vite.config.ts import { defineConfig } from vite import vue from vitejs/plugin-vue// 引入path&#xff0c;node提供的模塊&#xff0c;可以獲取文件或文件夾的路徑 import path from pathexport default defineConfig({plugins: […