4

enter image description here溢出菜单没有显示在安卓4.2.2

我下面简单的教程,问题出在安卓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

如果您的设备具有菜单按钮,则溢出图标不会出现在屏幕上。它只出现在没有菜单按钮的设备上。 – 2013-03-08 07:03:43

+0

@TalhaMir我尝试禁用硬件密钥。这不会解决问题? – DroidLearner 2013-03-08 07:06:30

回答

4

@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

+1

我创建了新的仿真器Galaxy Nexus。它的工作正常,但没有包含上面的代码! – DroidLearner 2013-03-08 07:16:06

+0

这取决于硬件菜单按钮。如果新的设备模拟器没有它们,这将工作。但我更愿意使用第一个代码段的解决方法,以便在所有设备上实现更好的一致性 – 2013-03-08 07:20:43

+0

感谢您的建议 – DroidLearner 2013-03-08 07:28:38