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

list 列表控件

list 控件简单分解就是一个背景页面加上顺序排列的按钮组成,按钮里面 可以包含一个图标和文本,当然,按钮的布局并不是固定的,库也允许用户重 新定义按钮的布局。按钮在添加后如果总大小超过 list 控件大小,可以上下滚 动。list 控件的应用非常广泛 ,最常见的就是微信界面,可以把页面当成是一 个背景,每一个联系人就是一个按钮控件内包含了头像以及用户名。 基于 list 控件模拟微信界面:
在这里插入图片描述

list 控件基础知识

添加按钮

在创建控件后,是一个空的 list,我们需要往 list 添加 btn 才是一个完整 的 list,函数 lv_list_add_btn(list, img_src, txt) 该函数会返回所添加的 btn 的指针,方便我们对 btn 控件进行其他操作。 在添加按钮的时候,我们可以指定按钮所使用的图像和文本,也可以使用 内置的符号字体作为图像,例如:

lv_list_add_btn(list, LV_SYMBOL_FILE, "file"); /* 添加按钮到 list,符号字体作为图标 */ 
lv_list_add_btn(list, &close_img, "close"); /* 添加按钮到 list,图像源作为图标 */

如果我们不想添加文本,直接输入 NULL 即可。 按钮的宽度会根据 list 的宽度设置为最大,按钮的高度会根据图标和文本, 以及按钮样式的填充部分进行自动调整。 添加 btn 会指定图标和文本,本质上是一个 img 控件和 label 控件,我们 可以获取这个 img 控件和 label 控件。函数 lv_list_get_btn_label(list_btn) 可以获取按钮的 label 控件指针,函数 lv_list_get_btn_img(list_btn) 可以 获取按钮的 img 控件指针。也可以单独获取按钮的文本,函数 lv_list_get_bt n_text(list_btn) 获取按钮的 label 和 img 的作用很大,在很多时候,我们往往需要修改 la bel 的一些参数,比如中文字体的显示,我们就需要获取 label 控件的指针,然 后修改其样式和尺寸。

删除按钮

可以使用函数 lv_list_remove(list, index) 根据索引来删除按钮,删除 成功返回 true,index 的值必须大于等于 0,且必须小于按钮的数量,按钮的数 量可以通过函数 lv_list_get_size(list) 获取。也可以清除 list 控件上的所 有按钮,函数 lv_list_clean(list)

获取按钮

在创建按钮的时候会返回按钮控件的指针,那么在创建多个按钮以后,我们一样可以获取每个按钮的指针。 函数 lv_list_get_prev_btn(list, prev_btn) 和函数 lv_list_get_nex t_btn(list, prev_btn) 可以依次获取按钮控件的指针,如果将第二个参数设 置为 NULL,则将从顶部或者底部开始获取按钮。

手动导航

可以使用函数 lv_list_up(list) 和 lv_list_down(list) 手动移动按 钮,也可以直接将焦点放在按钮上,函数 lv_list_focus(btn, LV_ANIM_ON/O FF) 可以选择是否打开动画。上下移动焦点时的动画时间也可以进行修改,函 数 lv_list_set_anim_time(list, anim_time) 动画时间设置为 0 表示没有动 画。

边缘闪烁

当 list 滑动到最顶部或者最底部的时候,可以显示一个类似圆圈的动态效 果,跟智能手机的效果类似,通过函数 lv_list_set_edge_flash(list, en) 启用或者关闭该功能。
在这里插入图片描述

滚动传播

list 控件内的按钮是可以滑动的,如果 list 是创建在 page 上面,当我们 滑动 list 到顶部或者底部的时候,就可以将滑动传播到父窗口,这样就可以带 动父窗口进行滚动。我们需要使用函数 lv_list_set_scroll_propagation(lis t, true) 来使能该功能。

单选模式

如果按钮使能了 toggle,可以使用函数 lv_list_set_single_mode(lis t, true) 来确保只有一个按钮处于 toggle 状态。
在这里插入图片描述

选中按钮

可以使用函数 lv_list_set_btn_selected(list, btn) 选中某个按钮, 选中后的按钮处于 LV_BTN_STATE_PR/TG_PR 状态。

滚动条

当添加的按钮超过 list 的尺寸后,就会启用滚动条,可以利用函数 lv_li st_set_sb_mode(list,mode) 来设置滚动条的模式

样式

list 控件的样式使用以下函数进行修改: lv_list_set_style(list, LV_LIST_STYLE_…, &style) 可用的样式类型:
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 如何保证电子产品可靠性设计?PCB板可制造性设计需要引起广大工程师的注意!
  • 数据库基础知识
  • roofs 根文件系统制作
  • 期货开户客户经理一对一专业服务指导
  • html网页设计模板制作前需要准备什么?
  • 起底野蛮成长的腾讯共享wifi赚钱小程序,到底是机遇还是陷阱?
  • 鲸探发布点评:9月2日发售罗丹雕塑系列数字藏品
  • 管理学精要
  • Java架构师技能点面试题汇总SSM简历模板1.0
  • ESelasticsearch-header菜鸟教程06--模糊查询
  • 什么才是Web测试?让我来告诉你~
  • es 用户启动elasticsearch
  • 【JAVA】Retrofit详解和使用
  • 基于Springboot+vue的羽毛球购物销售商城 elementui
  • nothing added to commit but untracked files present (use“git add“to track)
  • 网络传输文件的问题
  • 【剑指offer】让抽象问题具体化
  • 30天自制操作系统-2
  • css选择器
  • django开发-定时任务的使用
  • httpie使用详解
  • iOS 颜色设置看我就够了
  • Java 最常见的 200+ 面试题:面试必备
  • java概述
  • mysql常用命令汇总
  • node学习系列之简单文件上传
  • PHP 小技巧
  • Quartz初级教程
  • Redash本地开发环境搭建
  • 创建一个Struts2项目maven 方式
  • 力扣(LeetCode)22
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 我建了一个叫Hello World的项目
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 学习笔记:对象,原型和继承(1)
  • 最简单的无缝轮播
  • 2017年360最后一道编程题
  • ​什么是bug?bug的源头在哪里?
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #数学建模# 线性规划问题的Matlab求解
  • (003)SlickEdit Unity的补全
  • (LeetCode 49)Anagrams
  • (六)激光线扫描-三维重建
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (一)基于IDEA的JAVA基础12
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)EOS中账户、钱包和密钥的关系
  • (转)LINQ之路
  • (转)Sql Server 保留几位小数的两种做法
  • (转)母版页和相对路径
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)