溢出菜单非常窄。对于超过两英寸的屏幕,它甚至不是一英寸宽。我认为它会尝试调整自身的大小以适应菜单命令的文本和图标,但它似乎是一个固定的大小,我需要它更广泛。有没有办法强制它为菜单调整自己的大小?或者有没有办法设定它的大小?
答案 0 :(得分:1)
除了将填充和字体大小设置为命令样式之外,溢出菜单中还有另一个隐藏行为。
溢出菜单构建在List
之上,这是基于遗留代码的错误决定。由于大小调整,列表宽度通常通过渲染原型对象完成,除非您继承Toolbar
,否则无法访问该对象。
此代码:
Form f = new Form("AAAA", BoxLayout.y());
f.getToolbar().addMaterialCommandToOverflowMenu("Hi", FontImage.MATERIAL_3D_ROTATION, e -> Log.p("a"));
f.getToolbar().addMaterialCommandToOverflowMenu("Hi a", FontImage.MATERIAL_3D_ROTATION, e -> Log.p("aaa"));
f.getToolbar().addMaterialCommandToOverflowMenu("Hi aaa", FontImage.MATERIAL_3D_ROTATION, e -> Log.p("aaaaa"));
f.getToolbar().addMaterialCommandToOverflowMenu("Hi aaaaa", FontImage.MATERIAL_3D_ROTATION, e -> Log.p("aaaaaaa"));
f.getToolbar().addMaterialCommandToOverflowMenu("Hi aaaaaaa", FontImage.MATERIAL_3D_ROTATION, e -> Log.p("aaaaaaaaa"));
f.getToolbar().addMaterialCommandToOverflowMenu("Hi aaaaaaaaa", FontImage.MATERIAL_3D_ROTATION, e -> Log.p("aaaaaaaaaaa"));
f.getToolbar().addMaterialCommandToOverflowMenu("Hi aaaaaaaaaaa", FontImage.MATERIAL_3D_ROTATION, e -> Log.p("aaaaaaaaaaaaa"));
f.show();
产生这个:
注意菜单会一直增长,直到第5个元素停止。这是因为当我们没有渲染原型时,默认情况下列表仅检查前5个元素的首选大小。
正确的解决方案是丢弃列表并使用适当的容器,这将改善Toolbar
中的一些其他内容,但这需要一些工作。