1

メニュー項目を表示するためのアクション バーを実装しました。その android:showAsAction="always"ため、3 つのメニュー項目とandroid:showAsAction="withtext"、オーバーフロー メニュー内に表示する他の 4 つのメニュー項目を指定しました。

しかし、Android 3.0 バージョン未満を実行しているデバイスでコードを実行すると、これらの項目がメニュー パネルに表示されます。大画面ディスプレイ デバイスでコードを実行すると、アクション バーが表示されることがあります。メニュー項目の幅を制限して、すべての画面解像度で調整するにはどうすればよいですか?

4

2 に答える 2

0

オーバーフロー メニュー内に特定のアイテムを表示する場合android:showAsAction="ifRoom"は、menu.xml 内の特定のメニュー アイテムに使用します。

ターゲット デバイスに専用/ハード メニュー ボタンがある場合、ドキュメントに従ってアクション バー内にオーバーフロー ボタンが表示されないことに注意してください。 これもあなたを助けます..

編集

デバイスにハード ボタンがない場合、これによりオーバーフロー メニューが提供されます。ハードボタンがあってもオーバーフローメニューを表示したい場合は、次のことを試してください。

try {
      ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
                if(menuKeyField != null) {
                    menuKeyField.setAccessible(true);
                    menuKeyField.setBoolean(config, false);
                }
            } catch (Exception ex) {
                // Ignore
            }

デバイスにハードメニューボタンを強制的に無視させるちょっとしたハックです。

次のコードを確認してください。この実装では、アイテム 4 はアクション バーにのみ表示され、その他はオーバーフロー メニュー内に表示されます。これは、Show_As_Always が提供されている唯一のものであるために発生します。

@Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
       menu.add(0, 2, 0, "Item 1").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
       menu.add(0, 2, 0, "Item 2").setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);
       menu.add(0, 2, 0, "Item 3").setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);
       menu.add(0, 2, 0, "Item 4").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
       menu.add(0, 2, 0, "Item 5").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

       return true;
    }
于 2013-01-28T06:51:15.110 に答える
0

プログラムで追加する場合は、これを使用します。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, 1, 0, "Item #1").setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
    menu.add(0, 2, 0, "Item #2").setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
    return true;
}

メニュー XML を介して項目を追加することもできます。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/your_id_1"
        android:showAsAction="never"
        android:title="Item #1"/>

    <item
        android:id="@+id/your_id_2"
        android:showAsAction="never"
        android:title="Item #2"/>

</menu>
于 2013-10-10T23:19:44.220 に答える