LVGL,tabview用实体按键切换tab如何实现

在这里插入图片描述

文章目录


背景

最近项目中有个需求,要将近百个参数显示出来,首先想到了list控件,但是太长了,挨个翻也很麻烦,于是就用到了tabview,在每个tab页面下再加上list,这样翻找的效率就高些,在用实体按键绑定tabview控件时,发现没法选择tab,网上搜了好多,也没有说得明白的,那只能看官方的文档了,最终,还是解决了。

在这里插入图片描述


解决方案

关键的就四句:

lv_obj_t *tabview;
tabview = lv_tabview_create(body_obj, LV_DIR_LEFT, 80); //创建tabview
lv_obj_set_size(tabview, 480, 240);
lv_obj_set_pos(tabview, 0, 45);
lv_obj_add_event_cb(lv_tabview_get_content(tabview), scroll_begin_event, LV_EVENT_SCROLL_BEGIN, NULL);
lv_obj_t* tbs = lv_tabview_get_tab_btns(tabview);  //获取Button matrix (lv_btnmatrix)
lv_group_focus_obj(tabview); //设置焦点
lv_group_t* group = lv_group_create();
lv_group_add_obj(group, tbs); //加入group
lv_group_set_editing(group, false);
lv_indev_set_group(indev_keypad, group);

请添加图片描述

### LVGL Tabview 组件介绍 LVGL 的 `tabview` 是一种用于创建标签页视图的控件,允许用户通过点击不同的标签来切换显示的内容。这种组件非常适合构建具有多个页面或不同功能区的应用程序界面。 #### 创建 Tabview 实例 要初始化一个新的 `tabview` 对象并将其添加到当前屏幕中,可以使用如下代码: ```c lv_obj_t * tabview = lv_tabview_create(lv_scr_act(), NULL); ``` 这段代码会创建一个默认配置下的 `tabview` 并设置其父容器为当前激活的屏幕对象[^2]。 #### 添加新的标签页 为了向已有的 `tabview` 中增加新标签页,可调用函数 `lv_tabview_add_tab()` 来实现这一目的。下面是一个简单的例子展示如何新增两个名为 "Tab 1" 和 "Tab 2" 的标签页: ```c lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "Tab 1"); lv_obj_t * tab2 = lv_tabview_add_tab(tabview, "Tab 2"); ``` 这里返回的对象指针 (`tab1`, `tab2`) 可以用来进一步定制各个标签页内的内容布局和其他属性。 #### 自定义样式与行为 对于更高级的需求来说,还可以调整一些特定标志位来自定义 `tabview` 行为。例如,在某些情况下可能希望禁用滚动条,则可以通过清除相应的标记达到效果: ```c lv_obj_clear_flag(lv_tabview_get_content(obj), LV_OBJ_FLAG_SCROLLABLE); ``` 此操作使得整个 `tabview` 内部不再支持自动滚动生成更多空间给子元素排列[^3]。 #### 完整示例代码 综合上述知识点,给出一段完整的 C 语言源码片段作为参考: ```c #include "lvgl/lvgl.h" void create_tabs_example(void){ /* Create a tab view */ lv_obj_t * tabview = lv_tabview_create(lv_scr_act(), NULL); /* Add two tabs to the created tab view */ lv_obj_t * tab1 = lv_tabview_add_tab(tabview, "First Page"); lv_obj_t * tab2 = lv_tabview_add_tab(tabview, "Second Page"); // Optional: Customize appearance or behavior here... } ``` 以上就是关于 LVGL 库内 `tabview` 控制器的基础讲解以及简单应用实例。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智驾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值