我的应用程序有一个汉堡包菜单(三个堆栈打开侧面菜单,见下文)。它大部分时间都很好用,但有时在设备和模拟器上都会消失。
要再次重新出现,用户必须旋转屏幕,但不会阻止汉堡包菜单再次消失。另一个屏幕旋转使它再次出现。
要明确发生这种情况,即使用户点击了汉堡包图标所在的位置,也无法打开侧边菜单。
这个问题难以重现,有时它会连续发生,有时它根本不会发生(汉堡包图标和菜单停留在那里)。所以我正在寻找解决问题的线索。
任何提示赞赏,
答案 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);
}