LVGL 部件之滚轮(lv_roller)


一、概述

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

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

  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()获取选项的总数
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值