为啥当我在 CN1 应用程序中滑动时抬起手指时,我的侧边菜单会弹回?

Posted

技术标签:

【中文标题】为啥当我在 CN1 应用程序中滑动时抬起手指时,我的侧边菜单会弹回?【英文标题】:Why does my Side menu snaps back when i lift my finger, when swiping in my CN1 app?为什么当我在 CN1 应用程序中滑动时抬起手指时,我的侧边菜单会弹回? 【发布时间】:2020-04-09 14:58:54 【问题描述】:

在我的 Codenameone 应用程序中,我构建了一个侧边菜单,但我有 2 个外观问题。

    当我从左侧滑动并在屏幕空间中抬起手指时,比菜单完成稍远时,菜单会弹回。如果我在菜单将扩展到的空间中抬起手指,它不会弹回。滑动时有没有办法让侧边菜单留在屏幕上? 我的主页有一个可垂直滚动的容器。当我打开侧边菜单时,它不会禁用我的主页,因此我仍然可以通过在菜单右侧的空间上移动手指来滚动我的主页容器。当菜单打开时,我们是否可以默认禁用主页内容?

对于参考,我的菜单是按照this tutorial的设计,一个非常简单的例子是:

public void start() 
    if (current != null) 
        current.show();
        return;
    
    Form hi = new Form("Hi World", BoxLayout.y());
    hi.add(new Label("Hi World"));

    Toolbar t = new Toolbar();
    hi.setToolbar(t);
    t.setTitle("Title");
    Label logoLabel = new Label("");
    logoLabel.setTextPosition(Label.BOTTOM);
    logoLabel.setText("label text here");
    t.addComponentToSideMenu(logoLabel);

    hi.show();

谢谢

【问题讨论】:

【参考方案1】:

此处的关闭点似乎被硬编码为屏幕的四分之一:https://github.com/codenameone/CodenameOne/blob/master/CodenameOne/src/com/codename1/ui/Toolbar.java#L1380

代码中可能存在实现此逻辑的其他点。可能可以通过主题常量更改该逻辑以使该逻辑可配置。但现在这是硬编码的。

【讨论】:

好的,所以我读到目前我无能为力。查看 Facebook 和 BBC 新闻应用程序,我在他们的菜单上看不到滑动手势 - TBH 他们的菜单看起来像页面而不是侧菜单 - 所以我想我会禁用滑动并通过工具栏左上角的汉堡按钮访问菜单。干杯

以上是关于为啥当我在 CN1 应用程序中滑动时抬起手指时,我的侧边菜单会弹回?的主要内容,如果未能解决你的问题,请参考以下文章

安卓给gallery内"控件"挂载事件,滑动后抬起手指时也触发事件(滑动时不应触发)的解决!

如何在不抬起手指的情况下更改我按下的按钮? (在LibGDX中)

android listview上下滑动时为啥不触发点击事件

通过滑动手指按下按钮(用于钢琴效果)

移动端整屏滑动的实现

当手指在屏幕上而不抬起时,javascript动画在ios safari webkit浏览器中停止