2016-07-30 17 views
1

オーバーフローメニューは非常に狭いです。 2インチ以上の画面では、1インチ幅でさえありません。私はそれがメニューコマンドのテキストとアイコンに対応するようにサイズを変えようとしていると思うだろうが、固定サイズのようだし、もっと幅広くする必要がある。メニューのサイズを強制的に変更する方法はありますか?または、サイズを設定する方法はありますか?オーバーフローメニューの幅を制御するにはどうすればよいですか?

答えて

1

パディングとフォントサイズをコマンドスタイルに設定することに加えて、オーバーフローメニューには別の隠された動作があります。

オーバーフローメニューは、Listの上に構築されています。これは、レガシーコードに基づいた悪い決定です。そのサイジングのために、リストの幅は通常、Toolbarを継承しない限りアクセスできないレンダリングプロトタイプオブジェクトを通じて行われます。

このコード:メニューは停止している第五要素まで成長する

enter image description here

お知らせ:

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つの要素を優先サイズだけチェックするからです。

正しい解決策は、リストを捨てて、Toolbarの中の他のものを改善する適切な容器を使用することですが、これにはいくつかの作業が必要です。

関連する問題