汉堡菜单图标有时会在我的Codename One App中消失

时间:2017-03-17 04:22:42

标签: codenameone

我的应用程序有一个汉堡包菜单(三个堆栈打开侧面菜单,见下文)。它大部分时间都很好用,但有时在设备和模拟器上都会消失。

Hamburger menu

要再次重新出现,用户必须旋转屏幕,但不会阻止汉堡包菜单再次消失。另一个屏幕旋转使它再次出现。

要明确发生这种情况,即使用户点击了汉堡包图标所在的位置,也无法打开侧边菜单。

这个问题难以重现,有时它会连续发生,有时它根本不会发生(汉堡包图标和菜单停留在那里)。所以我正在寻找解决问题的线索。

任何提示赞赏,

2 个答案:

答案 0 :(得分:2)

我过去遇到过这样的问题,因为我将Form UIID设置为其他内容,并将该UIID保留为背景透明度为0.

答案 1 :(得分:2)

我过去也有过类似的问题,即使背景透明度设置为255且不一致。

我的解决方案是使用按钮作为汉堡菜单,并远离使用主题。

首先,我通过添加主题常量hideLeftSideMenuBool来隐藏默认汉堡包菜单按钮,并将其设置为true

我有一种基于尺寸创建材质图标的方法:

public static FontImage materialIcon(char charCode, int size, int color) {
    Font fnt = Font.createTrueTypeFont("native:MainLight", "native:MainLight").derive(Display.getInstance().convertToPixels(size), Font.STYLE_PLAIN);
    Style s = new Style(color, 0, fnt, (byte) 0);
    FontImage fm = FontImage.createMaterial(charCode, s);
    fm.setPadding(0);
    return fm;
}

最后,我添加了自定义菜单命令并将其设置为打开侧面菜单,然后将其放在左侧栏上:

Command cmdMenu = Command.create("", materialIcon(FontImage.MATERIAL_MENU, 5), evt -> getToolbar().openSideMenu());
if (!Display.getInstance().isTablet() && !Toolbar.isPermanentSideMenu()) {
    getToolbar().addCommandToLeftBar(cmdMenu);
}