如何控制溢出菜单的宽度?

时间:2016-07-30 07:19:38

标签: codenameone

溢出菜单非常窄。对于超过两英寸的屏幕,它甚至不是一英寸宽。我认为它会尝试调整自身的大小以适应菜单命令的文本和图标,但它似乎是一个固定的大小,我需要它更广泛。有没有办法强制它为菜单调整自己的大小?或者有没有办法设定它的大小?

1 个答案:

答案 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();     

产生这个:

enter image description here

注意菜单会一直增长,直到第5个元素停止。这是因为当我们没有渲染原型时,默认情况下列表仅检查前5个元素的首选大小。

正确的解决方案是丢弃列表并使用适当的容器,这将改善Toolbar中的一些其他内容,但这需要一些工作。