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

How do I control the width of the overflow menu?

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

除了为命令样式设置填充和字体大小外,溢出菜单中还有另一个隐藏行为。

溢出菜单建立在 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 中的许多其他内容,但这需要一些工作。