首页 > 解决方案 > 为什么当我在 CN1 应用程序中滑动时抬起手指时,我的侧边菜单会弹回?

问题描述

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

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

作为参考,我的菜单与本教程的设计一致,一个非常简单的示例是:

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();
}

谢谢

标签: codenameone

解决方案


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

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


推荐阅读