LVGL_基础控件滚轮roller

LVGL_基础控件滚轮roller

1、创建滚轮roller控件

在这里插入图片描述

/* 创建一个 lv_roller 部件(对象) */
lv_obj_t * roller = lv_roller_create(lv_scr_act());    // 创建一个 lv_roller 部件(对象),他的父对象是活动屏幕对象// 将部件(对象)添加到组,如果设置了默认组,这里可以省略,因为 lv_roller 是 LV_OBJ_CLASS_GROUP_DEF_TRUE
//lv_group_add_obj(g, roller);//lv_roller_set_options(roller, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10", LV_ROLLER_MODE_NORMAL);   // 写法1:设置选项,索引从0开始
//lv_roller_set_options(roller, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10", LV_ROLLER_MODE_INFINITE); // 设置为可以无限滚动的模式
lv_roller_set_options(roller,"1\n""2\n""3\n""4\n""5\n""6\n""7\n""8\n""9\n""10",LV_ROLLER_MODE_NORMAL); // 写法2:设置选项(连续写两个双引号相当于将两者连起来,相当于上面的方法1)
2、创建为无限滚动的模式

在这里插入图片描述

lv_roller_set_options(roller, "1\n2\n3\n4\n5\n6\n7\n8\n9\n10", LV_ROLLER_MODE_INFINITE); // 设置为可以无限滚动的模式
3、设置默认选中项(注意:选中项是从0开始的)
// 设置默认选中的选项
lv_roller_set_selected(roller, 3, LV_ANIM_ON);
4、设置显示的行数(5行)

在这里插入图片描述

// 设置可见的选项个数(行数)
// 如果滚轮的字体、行距、边框宽度等发生变化,则需要再次调用此函数以重新进行调整。
lv_roller_set_visible_row_count(roller, 5);
5、设置显示的高度

在这里插入图片描述

// 可见行也可以通过调整高度设置,但是一般不会这么做
// 正常是使用 lv_roller_set_visible_row_count 设置
lv_obj_set_height(roller, 200);
6、设置滚轮的字体
// 修改滚轮所使用的字体(英文)
lv_obj_set_style_text_font(roller, &lv_font_montserrat_22, LV_PART_MAIN);                 // 设置没有选中的选项的字体
lv_obj_set_style_text_font(roller, &lv_font_montserrat_22, LV_PART_SELECTED);             // 设置选中的选项的字体
7、设置滚轮显示汉字
// 修改滚轮所使用的字体(中文)
LV_FONT_DECLARE(lv_font_source_han_sans_bold_14);   // 声明字体,可以放到函数外部
lv_obj_set_style_text_font(roller, &lv_font_source_han_sans_bold_14, LV_PART_MAIN);                 // 设置没有选中的选项的字体
lv_obj_set_style_text_font(roller, &lv_font_source_han_sans_bold_14, LV_PART_SELECTED);             // 设置选中的选项的字体
lv_roller_set_options(roller, "一\n二\n三\n四\n五\n六\n七\n八\n九\n十", LV_ROLLER_MODE_NORMAL);     // 设置中文选项
8、改变选项中文字的位置
    // 改变选项中文字位置
//lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_LEFT, 0);   // 左对齐
lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_RIGHT, 0);  // 右对齐
//lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_CENTER, 0); // 居中对齐
//lv_obj_set_style_text_align(roller, LV_TEXT_ALIGN_AUTO, 0);   // 自动对齐
9、添加事件

在这里插入图片描述

// 添加事件
// 当我们滑动了滚轮中的选项列表时,会触发 LV_EVENT_VALUE_CHANGED 事件类型,这里接收所有的事件类型,在回调处理函数中再过滤处理
lv_obj_add_event_cb(roller, roller_event_handler, LV_EVENT_ALL, NULL);// 通过其他部件选择选项
lv_obj_t * btn = lv_btn_create(lv_scr_act());
lv_obj_align_to(btn, roller, LV_ALIGN_OUT_TOP_MID, 0, -10);
lv_obj_add_event_cb(btn, btn_event_handler, LV_EVENT_CLICKED , roller);// 通过其他部件选择
static void btn_event_handler(lv_event_t * e)
{lv_event_code_t code = lv_event_get_code(e);lv_obj_t *btn = lv_event_get_target(e);lv_obj_t *roller  = lv_event_get_user_data(e);if(code == LV_EVENT_CLICKED) {uint32_t sel_opt = lv_roller_get_selected(roller);          // 获取当前选项的索引(位置)uint32_t total_opt = lv_roller_get_option_cnt(roller) - 1;  // 获取当前选项的总数,因为索引从 0 开始算,所以减一用于判断最后的选项if (sel_opt == total_opt)   sel_opt = 0;else                        sel_opt += 1;lv_roller_set_selected(roller, sel_opt, LV_ANIM_ON);lv_event_send(roller, LV_EVENT_VALUE_CHANGED, 0);           // 向 roller 发送 LV_EVENT_VALUE_CHANGED 事件}
}// 滚轮的事件回调处理函数
static void roller_event_handler(lv_event_t * e)
{lv_event_code_t code = lv_event_get_code(e);lv_obj_t *roller = lv_event_get_target(e);if (code == LV_EVENT_VALUE_CHANGED){LV_LOG_USER("%d", lv_roller_get_selected(roller));             // 获取被选中的选项的索引值,从0开始char tmp_buf[8];lv_roller_get_selected_str(roller, tmp_buf, sizeof(tmp_buf));  // 获取被选中的选项的内容LV_LOG_USER("%s", tmp_buf);}
}
10、设置背景颜色

在这里插入图片描述

lv_obj_set_style_bg_color(roller,lv_color_hex(0xd35230),0);
11、设置选中项的背景颜色

在这里插入图片描述

lv_obj_set_style_bg_color(roller,lv_color_hex(0xF0F0F0),LV_PART_SELECTED);
12、设置选项之间的间隔

在这里插入图片描述

lv_obj_set_style_text_line_space(roller,50,0);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/149975.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

MFC文本输出学习

void CTxttstView::OnDraw(CDC* pDC) {CTxttstDoc* pDoc GetDocument();ASSERT_VALID(pDoc);// TODO: add draw code for native data hereCString str1;pDC->SetBkColor(RGB(0,0,0));pDC->TextOut(50, 50, "一段文字");pDC->SetBkColor(RGB(255,255,255))…

Linux Vi编辑器基础操作指南

Linux Vi编辑器基础操作指南 Linux中的Vi是一个强大的文本编辑器,虽然它有一些陡峭的学习曲线,但一旦掌握了基本操作,它就变得非常高效。以下是Vi编辑器的一些基本用法: 打开Vi编辑器: vi 文件名退出Vi编辑器&#xff…

kafka初体验基础认知部署

kafka 基础介绍 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发并于2011年开源。它主要用于解决大规模数据的实时流式处理和数据管道问题。 Kafka是一个分布式的发布-订阅消息系统,可以快速地处理高吞吐量的数据流,并将数据实时地分…

【状态估计】将变压器和LSTM与卡尔曼滤波器结合到EM算法中进行状态估计(Python代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

数据挖掘(3)特征化

从数据分析角度,DM分为两类,描述式数据挖掘,预测式数据挖掘。描述式数据挖掘是以简介概要的方式描述数据,并提供数据的一般性质。预测式数据挖掘分析数据建立模型并试图预测新数据集的行为。 DM的分类: 描述式DM&#…

剑指offer——JZ26 树的子结构 解题思路与具体代码【C++】

一、题目描述与要求 树的子结构_牛客题霸_牛客网 (nowcoder.com) 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构) 假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2}&…

第一章 visual studio下载安装

一、官网下载 地址:https://visualstudio.microsoft.com/zh-hans/ 点击免费visual studio 二、安装 运行下载好的exe文件,自定义安装目录 三、选择需要的组件安装 只需要选择标记组件,然后点击安装 等待安装完成就行 四、重启电脑 安装完之后…

【PyCharm】SSH连接远程服务器,代码能跑但导入的库被标红的解决方案

文章目录 一、问题描述二、解决方案一三、解决方案二 一、问题描述 在 PyCharm 中修改SSH连接的远程服务器的 Python 解释器后,导入的第三方库会被标红,如图1所示: 图1 但此时程序仍然可以正常执行: 图2 二、解决方案一 在 Py…

第三章、运输层

文章目录 3.1 概述和运输层服务3.1.1 运输层和网络层的关系3.1.2 因特网运输层概述 3.2 多路复用与多路分解3.3 无连接运输:UDP3.4 可靠数据传输原理3.4.1构造可靠数据传输协议rdt1.0rdt2.xrdt3.0 3.4.2 流水线可靠数据传输协议3.4.3 回退N步3.4.4选择重传 3.5 面向…

4.MySql安装配置(更新版)

MySql安装配置 无论计算机是否有安装其他mysql,都不要卸载。 只要确定大版本是8即可,8.0.33 8.0.34 差别不大即可。 MySql下载安装适合电脑配置属性有关,一次性安装成功当然是非常好的,因为卸载步骤是非常麻烦的 如果第一次安装…

面试高频手撕算法 - 01背包系列

1. 前言 为什么要专门去搞一下这个背包问题呢 ? 因为作者已经在两场面试中吃了这个亏, 尤其是在面深信服的测开岗的时候, 一面的难度适中, 加上面试官也没为难我, 侥幸让我过了. (以下是一面问题) 二面的时候, 主要问了项目和手撕算法. 当时项目个人觉得面的还不错, 因为本人是…

基于SpringBoot的电影评论网站

目录 前言 一、技术栈 二、系统功能介绍 电影信息管理 电影评论回复 电影信息 用户注册 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了电影评…

八、【快速选择工具组】

文章目录 对象选择工具快速选择工具魔棒工具 对象选择工具 当我们选择对象选择工具时,需要先注意上边有一个循环的圆,它会进行内容识别,当识别完成会停止旋转。这个时候我们按住n键,或者将鼠标放上对应的图形时会出现选中的颜色。…

lambda表达式在实际开发中的使用

作为写代码已经两年的程序员了,lambda已经是再熟悉不过了。其实在众多的编程语言中,python javascript java中都有lambda的影子。包括比较新的编程语言golang,到最后发现其实各种语言的语法和特性都是相互抄袭的,所以在接触新技术…

铝合金分类及相关总结

1 铝合金常识 铝合金是工业中应用最广泛的一类有色金属结构材料,在航空、航天、汽车、机械制造、船舶及化学工业中已大量应用。对于常用的铝合金,我们通常根据其铝及其他元素的含量,将其分为两大类,分别是纯铝和铝合金。对这两大类…

多源蒸馏域适应

方法 D是域判别器,C是分类器。阶段3选择更接近目标的源训练样本用来微调C。阶段4对于每个源域,基于阶段2学到的目标编码器提取图像特征。接着结合每个源分类器的不同预测获得最终预测Result( x T x_T xT​) ∑ i 1 N w i C i ′ ( F i T ( x T ) ) \sum…

Java8 Lambda.stream.sorted() 方法使用浅析分享

文章目录 Java8 Lambda.stream.sorted() 方法使用浅析分享sorted() 重载方法一升序降序 sorted() 重载方法二升序降序多字段排序 mock代码 Java8 Lambda.stream.sorted() 方法使用浅析分享 本文主要分享运用 Java8 中的 Lambda.stream.sorted方法排序的使用! sorted…

【C++】:类和对象(2)

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux的基础知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

逐步解决Could not find artifact com:ojdbc8:jar:12

Could not find artifact com:ojdbc8:jar:12 in central (https://repo.maven.apache.org/maven2) 原因: ojdbc8:jar:12 属于Oracle 数据库链接的一个程序集,缺失的话很有可能会影响数据库链接,蝴蝶效应产生不可预测的BUG!但是版…

苹果手机怎么备份所有数据?2023年iPhone 15数据备份常用的3种方法!

当苹果手机需要进行刷机、恢复出厂设置、降级iOS系统等操作时,我们需要将自己的iPhone数据提前进行备份。 特别是在苹果发布新iOS系统时,总有一些小伙伴因为升降级系统,而导致了重要数据的丢失。 iPhone中储存着重要的照片、通讯录、文件等数…