前言

lvgl默认创建出来的tabview是不能在第一个和最后一个页面之间循环切换的。

下面的教大家怎么让tabview的页面可以循环切换,也就是:

  • 当切换到第一个页面的时候可以继续切换到最后一个页面
  • 反过来,当切换到最后一个页面的时候可以继续切换到第一个页面

实现思路

我们先要弄清楚 tabview 由哪些部分组成。
选项卡视图对象可用于组织选项卡中的内容。选项卡视图是从其他小部件构建的:

  • tabview主容器

    • 选项卡按钮
    • 选项卡的容器(页面)

选项卡按钮可以位于选项卡视图的顶部、底部、左侧和右侧,或者隐藏起来。
我们可以通过单击选项卡按钮或在选项卡容器上水平滑切换选项卡。

也就是当我滑动tabview中的页面(选项卡)的时候实际上是在操作tabview中的选项卡部分

所以我们可以给 tabview 中的页面(选项卡)添加一个事件处理回调函数,来完成页面的循环切换功能。

实现代码

// 为 tabview 中的页面(选项卡)部分添加事件处理回调函数
lv_obj_add_event_cb(lv_tabview_get_content(tabview), scroll_begin_event, LV_EVENT_SCROLL_END, NULL);// 处理滚动事件,完成页面循环切换(无限切换)
static void scroll_begin_event(lv_event_t * e)
{lv_obj_t * cont = lv_event_get_target(e);lv_event_code_t code = lv_event_get_code(e);lv_obj_t * tv = lv_obj_get_parent(cont);if(lv_event_get_code(e) == LV_EVENT_SCROLL_END) {lv_tabview_t * tabview = (lv_tabview_t *)tv;lv_coord_t s = lv_obj_get_scroll_x(cont);lv_point_t p;lv_obj_get_scroll_end(cont, &p);lv_coord_t w = lv_obj_get_content_width(cont);lv_coord_t t;if(lv_obj_get_style_base_dir(tv, LV_PART_MAIN) == LV_BASE_DIR_RTL)  t = -(p.x - w / 2) / w;else t = (p.x + w / 2) / w;if(s < 0) t = tabview->tab_cnt - 1;else if((t == (tabview->tab_cnt - 1)) && (s > p.x)) t = 0;bool new_tab = false;if(t != lv_tabview_get_tab_act(tv)) new_tab = true;lv_tabview_set_act(tv, t, LV_ANIM_ON);}
}

效果

lvgl视频教程

百问网LVGL(v8)系列课程(韦东山·监制) 教程基于lvgl v8.2版本,课程适配多个平台、多款板子

百问网LVGL(v8)视频课程(韦东山·监制) 教程基于lvgl v8.2版本,课程适配多个平台、多款板子!视频学习地址:https://www.bilibili.com/video/BV1Ya411r7K2

视频教程配套资料

  • https://gitee.com/weidongshan/lvgl_100ask_course_materials

相关学习资源

  • lvgl官网:https://lvgl.io
  • lvgl官方文档:https://docs.lvgl.io
  • 百问网lvgl中文文档:http://lvgl.100ask.net
  • 百问网lvgl论坛:https://forums.100ask.net/c/13-category/13
  • 百问网lvgl学习交流群:http://lvgl.100ask.net/master/contact_us/index.html
  • 百问网lvgl视频教程:
    • https://www.bilibili.com/video/BV1Ya411r7K2
    • https://www.100ask.net/detail/p_61c5a317e4b0cca4a4e8b6f1/6

lvgl|让tabview的页面循环切换(无限切换)相关推荐

  1. python自动化—web页面操作之窗口切换

    from selenium import webdriverdriver=webdriver.Chrome()#设置隐形等待时间 设置成全局的,每个元素需要等待10s 养成习惯 driver.impl ...

  2. jsp页面div上下滑动_H5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 实现原理 假 ...

  3. html5页面的手势,HTML5单页面手势滑屏切换如何实现

    这次给大家带来HTML5单页面手势滑屏切换如何实现,怎么实现HTML5单页面手势滑屏切换?HTML5单页面手势滑屏切换的注意事项有哪些,下面就是实战案例,一起来看一下. H5单页面手势滑屏切换是采用H ...

  4. 大漠多线程循环任务自动切换模板判断账号登陆成功

    本判断游戏角色是否登陆成功,录制了模拟日常任务,是否出现游戏画面,退出游戏等等小的环节,因为是自动登录,自动切换账号,所以,判断游戏是否登录成功,这一环节就是必须的,我们不能根据游戏进程是否存在,以为 ...

  5. python遍历循环和无限循环结构_Python --- 程序的循环结构

    1.遍历循环 2.无限循环 3.循环控制保留字 4.循环的高级用法 1.遍历循环 遍历某个结构形成的循环运行方式 for in : - 从遍历结构中逐一提取元素,放在循环变量中 - 完整遍历所有元素后 ...

  6. 解决导航栏按钮背景色切换,刷新页面,按钮背景色切换,页面和路径没有切换问题

    解决导航栏按钮背景色切换,刷新页面,按钮背景色切换,页面和路径没有切换问题 上篇博文中 点击导航栏切换背景色 有一个bug,如果点击第二个或者后面几个按钮,再刷新页面,按钮背景色会跳到第一个按钮上去, ...

  7. Auto CAD:CAD软件之底边菜单栏(捕捉模式、极轴状态、对象捕捉、允许禁止动态UCS、动态输入、显示隐藏线宽、快速查看图形、选择循环命令、切换空间按钮)简介之详细攻略

    Auto CAD:CAD软件之底边菜单栏(捕捉模式.极轴状态.对象捕捉.允许禁止动态UCS.动态输入.显示隐藏线宽.快速查看图形.选择循环命令.切换空间按钮)简介之详细攻略 目录

  8. python遍历循环和无限循环结构_Python通过for、while等保留字提供遍历循环和无限循环结构...

    Python通过for.while等保留字提供遍历循环和无限循环结构 答:√ 血清和血浆的主要区别在于血清缺乏 答:纤维蛋白原 景区讲解员上岗前准备之一:佩戴好本景区导游证的标志 答:× ()决定着社 ...

  9. 前端的小玩意(9.1)——做一个仿360工具箱的web页面(Tab按钮切换)

    需求: ①写一个web版的360工具箱,示意图如下: ②无左上返回按钮,右上按钮有皮肤切换,下拉框(但无点击逻辑): ③按钮点击有事件,但事件是console.log(按钮名): ④可以在全部工具和我 ...

  10. html5页面图片切换,HTML5单页面手势滑屏切换原理

    H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...

最新文章

  1. Python用拉格朗日法进行数据横向插值
  2. Excel隐藏的数据处理技巧
  3. 《ASP.NET Core 微服务实战》译者序
  4. 第一范式,第二范式,第三范式,BCNF范式理解
  5. nodejs+react使用webpack打包时控制台报错
  6. 利用php打印出九行菱形,C++ 输出菱形
  7. js截取字符长度加省略号
  8. ora-01031:insufficient privileges解决方法总结
  9. python生成exe文件太大了_Pyinstaller打包生成exe文件过大,四种常用处理方法集锦---嵌入式Python-02...
  10. GenBank数据格式
  11. 探索性数据分析EDA(二)—— 缺失值处理
  12. 几个简单的论文下载方法
  13. 【信息收集】用python获取IP信息(六)
  14. ubuntu下改变桌面图标大小方法
  15. error: cannot use promoted field in struct literal of type [duplicate]
  16. 用Cocos Creator 做了一个模拟股票游戏
  17. 洛谷P2071 座位安排
  18. 有skycc营销软件,我的网站PR飙升
  19. airpods版本号_苹果更新 AirPods Pro 固件
  20. (附源码)springboot石河子海关门户网站 毕业设计 241103

热门文章

  1. 职场小白之SVN连接篇
  2. Google Guava 工具类与 Kotlin 语言的设计
  3. 数学和计算机竞赛,申请数学和计算机相关专业?这个竞赛必不可少!
  4. 将所有的依赖打包成一个jar包 maven-assembly-plugin
  5. 我的奇思妙想机器人消防员_我的奇思妙想发明机器人作文500字
  6. 新兴崛起的优雅框架Mybatis-Flex
  7. 硬盘数据恢复秘技大全(转博客天地一精贴)
  8. 计算机毕设Python+Vue学生健康饮食信息管理系统(程序+LW+部署)
  9. 辛苦了一年发年终奖啦 公司不会告诉你的4件事
  10. PopupWindow 引起所依附的Activity透明