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

LVGL 部件之滚轮(lv_roller)

目录

  • 一、概述
  • 二、滚轮
    • 1、添加选项和滚轮模式
    • 2、获取选项索引和文本
    • 3、可见行
    • 4、事件
    • 5、API 函数


一、概述

滚轮类似下拉列表,和下拉列表不同的是,滚轮有直接可见的几个选项,我们可以通过滚动滚轮中的列表来浏览并选择选项。

滚轮部件由两个部分组成:主体背景和所选文本。各组成部分的相关枚举如下所示:

  1. 主体背景 LV_PART_MAIN
  2. 所选文本 LV_PART_SELECTED

二、滚轮

1、添加选项和滚轮模式

默认情况下,滚轮部件创建出来后,其并不具备任何选项,用户需要添加选项,可调用 lv_roller_set_options(roller, options, LV_ROLLER_MODE_NORMAL) 函数。需要注意的是,选项之间要用 \n 分隔。

其中,lv_roller_set_options 函数的第三个参数可以选择滚动模式:

  • 参数 LV_ROLLER_MODE_NORMAL 是设置为正常模式(滚轮在选项结束时结束)
  • 参数 LV_ROLLER_MODE_INFINITE 是设置为无限模式(滚轮可以一直滚动)

如果滚轮部件为 LV_ROLLER_MODE_INFINITE 模式,此时,用户滚动选项,当选项滚动到最后一个,若继续滚动,其将回到第一个选项(循环滚动);如果滚轮部件为 LV_ROLLER_MODE_NORMAL 模式,则滚轮部件的最后一个和第一个选项不能循环切换。

使用 lv_roller_set_selected(roller, id, LV_ANIM_ON) 手动选中一个选项,其中 id 是选项的索引,选项从 0 开始索引。

void my_gui(void)
{
    lv_obj_t* roller1 = lv_roller_create(lv_scr_act());
    lv_roller_set_options(roller1,
        "January\n"
        "February\n"
        "March\n"
        "April\n"
        "May\n"
        "June\n"
        "July\n"
        "August\n"
        "September\n"
        "October\n"
        "November\n"
        "December",
        LV_ROLLER_MODE_INFINITE);
    lv_obj_align(roller1, LV_ALIGN_CENTER, 0, 0);
    lv_roller_set_selected(roller1, 5, LV_ANIM_ON);
}

2、获取选项索引和文本

  • 如果用户想获取当前选中选项的索引,可调用 lv_roller_get_selected 函数
  • 如果用户想获取当前选中选项的文本,可调用 lv_roller_get_selected_str 函数。

3、可见行

可见行数可以通过 lv_roller_set_visible_row_count(roller, num) 进行调整。

此函数会根据滚轮当前样式的高度(字体、行距、边框宽度等)进行调整。如果滚轮的字体、行距、边框宽度等发生变化,则需要再次调用此函数对齐重新进行调整。

在这里插入图片描述

lv_roller_set_visible_row_count(roller1, 5);

4、事件

在选中选项时会触发 LV_EVENT_VALUE_CHANGED 事件(按照逻辑来说只要你滚动了滚轮中的选项都会触发此事件类型)。

5、API 函数

函数描述
lv_roller_create()创建滚轮部件
lv_roller_set_options()设置滚轮部件选项
lv_roller_set_selected()设置所选选项
lv_roller_set_visible_row_count()设置可见选项数量
lv_roller_get_selected()获取所选选项索引
lv_roller_get_selected_str()获取所选选项文本
lv_roller_get_options()获取滚轮的选项
lv_roller_get_option_cnt()获取选项的总数

http://www.kler.cn/a/299960.html

相关文章:

  • 深度学习系列76:流式tts的一个简单实现
  • mock可视化生成前端代码
  • UDP 广播组播点播的区别及联系
  • Vue基础(2)
  • 基于ESP32-IDF驱动GPIO输出控制LED
  • 华为OD机试真题---战场索敌
  • MySQL的优化原则
  • 使用Selenium WebDriver来检测网页上的坏链接
  • PHP无缝对接预订无忧场馆预订系统小程序源码
  • SDH信号的帧结构与复用
  • ChatGPT提示词优化大师使用指南
  • 【网络安全】-文件下载漏洞-pikachu
  • 常用的 CMD 指令及其功能
  • 2024软件测试面试题及答案
  • 每日一练8:dd爱框框(含链接)
  • 【网络安全】-文件上传漏洞实战-upload-labs(0~16)
  • Python 内置的一些数据结构
  • Groovy -> Groovy 集合操作
  • 【数据结构】二叉树的前中后序遍历以及层序遍历(全解)
  • PostgreSQL中的多版本并发控制(MVCC)深入解析
  • 会话好友区设计与开发(二)
  • 自然语言处理系列六十九》搜索引擎项目实战》搜索框架技术选型
  • 常见 HTTP 状态码详解与Nginx 文件上传大小限制
  • C++复习day08
  • SpringCache之本地缓存
  • 自动化抢票 12306