OpenEdv-开源电子网

 找回密码
 立即注册
查看: 3977|回复: 1

关于LVGL 的lv_scr_act() lv_layer_top()的应用问题

[复制链接]

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
发表于 2021-11-9 18:37:33 | 显示全部楼层 |阅读模式
10金钱
我基于lv_layer_top()该层创建一个“下一步”的按键,基于lv_scr_act()创建一个弹窗
具体代码
  1. g_message_confirm_box = menu_message_confirm_box_create(lv_scr_act(), 165, widgets_event_cb, \
  2.                                                                 STR_SELECT_MODEL_TYPE_CONFIRM_BOX);

  3. btn_step = menu_button_create(lv_layer_top(), 238, 24, 80, 42, widgets_event_cb);
  4.     label_step = menu_label_in_btn_create(btn_step, STR_NEXT_STEP);
复制代码

然后一个现象是如图

发现弹窗和“下一步”的按键都是可以操作的,

想实现弹窗出现时,按键是不可点的

另外这两个层不是不在同一层吗?为啥会有同时显示两层呢?


snipaste_20211109_183250.png

最佳答案

查看完整内容[请看2#楼]

理解: lv_layer_top():该层是顶部层, lv_scr_act():是当前活跃的屏幕对象(也就是该界面) 关于创建对象,有两个自动生成的层: 1.顶层 lv_layer_top() 2.系统层 lv_layer_sys() 它们独立于屏幕(lv_scr_act()),并且将显示在每个屏幕上。顶层位于屏幕上每个对象的上方,而系统层也位于顶层上方。可以将任何弹出窗口自由添加到顶层。但是,系统层仅限于 系统级 的内容(例如,鼠标光标将放在 lv_indev_set_cursor() 中) ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

41

主题

276

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2354
金钱
2354
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2021-11-9 18:37:34 | 显示全部楼层
理解:
lv_layer_top():该层是顶部层,
lv_scr_act():是当前活跃的屏幕对象(也就是该界面)

关于创建对象,有两个自动生成的层:
1.顶层 lv_layer_top()
2.系统层 lv_layer_sys()
它们独立于屏幕(lv_scr_act()),并且将显示在每个屏幕上。顶层位于屏幕上每个对象的上方,而系统层也位于顶层上方。可以将任何弹出窗口自由添加到顶层。但是,系统层仅限于 系统级 的内容(例如,鼠标光标将放在 lv_indev_set_cursor() 中)。
层级关系: lv_scr_act() < lv_layer_top() < lv_layer_sys()

根据上述描述,那么在top层创建的按键是 大于 在arc层创建的弹窗,故按键在有弹窗时,也可以显示并点击;
处理方法:将弹窗改为基于top层创建,那么当有弹窗时,“下一步”按键,会在弹窗的阴影面中,此时的按键是点击不了的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 11:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表