4

ここに画像の説明を入力

私は簡単なチュートリアルに従っています。問題は、Android 4.2.2 でオーバーフロー メニューが表示されないことです。ハードウェアメニューボタンを押すと、リストされたメニューが表示されます。

xml コード:

<item
    android:id="@+id/add_item"
    android:icon="@drawable/ic_action_emo_laugh"
    android:showAsAction="ifRoom"
    android:title="Emo Laugh"
  >
</item>
<item
    android:id="@+id/about"
    android:icon="@drawable/ic_action_emo_tongue"
    android:showAsAction="never"
    android:title="Emo TOngue"
    >
</item>

4

1 に答える 1

5

@TalhaMirそうですね。オーバーフロー メニューが常に表示されるようにしたい場合は、この回避策を使用できます。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
       <item android:id="@+id/capture" android:icon="@drawable/ic_action_capture" android:showAsAction="always"/>
       <item android:id="@+id/location" android:icon="@drawable/ic_action_location" android:showAsAction="always"/>
       <item android:showAsAction="always" android:icon="@drawable/abs__ic_menu_moreoverflow_holo_dark">
           <menu>
               <item android:id="@+id/terms_of_service" android:title="@string/ab_terms_of_service"/>
               <item android:id="@+id/privacy_policy" android:title="@string/ab_privacy_policy"/>
               <item android:id="@+id/help" android:title="@string/ab_help"/>
           </menu>
       </item>
   </menu>

または、クラスonCreateのメソッドでこのハックを使用できますApplication

private void getOverflowMenu() {

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

しかし、このハックは互換性を壊し、私が知っているように、Action Bar Sherlock では動作しません。

于 2013-03-08T07:10:02.747 に答える