2012-06-30 36 views
6

我试图将我的应用程序重新设置为使用ABS的ICS外观。获得ActionBar本身很好,直接,但是添加菜单项目还没有。ActionBarSherlock项目没有出现在溢出

我的代码如下所示:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

正在使用的所有相应的进口。

而且我menu.xml文件如下:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/backup" android:title="@string/backupLabel"/> 
    <item android:id="@+id/restore" android:title="@string/restoreLabel"/> 
</menu> 

的动作条显示,但菜单表现为2.1菜单 - 从没有可用溢出菜单按钮激活只。在ICS仿真器上也是如此 - 我必须使用菜单按钮来激活菜单。

如果我添加android:showAsAction =“ifRoom”,那么这些项显示为操作项 - 但不在溢出中,这是我希望它们始终存在的位置。

这一切都有道理吗?

我错过了什么?

+0

http://stackoverflow.com/questions/9286822/how-to-force-use-of-overflow-menu-on -devices-with-menu-button –

+0

http://stackoverflow.com/questions/8758263/how-to-force-overflow-menu-on-android-actionbar-compat –

+0

保罗是否通过提供的链接修复了您的问题? – Warpzit

回答

0

您可能正在使用启用了硬件键盘的仿真器,而不是软件。要查看溢出菜单中的操作,请使用带有软件控制的仿真器。筛查结果显示了两种方法。

  • 编辑现有的AVD

Edit an existing AVD

  • 克隆已有设备简档

Clone an existing device profile

1

ForceOverflow已经在ABS 4.1.2中被删除,创作者发现它永远不会做到(请参阅更新记录注释)。我非常有信心看到预期的行为;任何带有运行ICS +的菜单按钮的设备(例如我的Nexus S)都不会显示溢出菜单,因为有一个专用硬件按键 - “菜单”按钮。

使用仿真器配置从仿真设备中删除菜单按钮,Android会知道添加溢出菜单。

4

只需使用此代码boath菜单上动作条:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/backup" 
     android:showAsAction="ifRoom" 
     android:title="backupLabel"/> 
    <item 
     android:id="@+id/restore" 
     android:showAsAction="ifRoom" 
     android:title="restoreLabel"/> 
</menu> 

它的样子:

enter image description here

因为如果你使用

android:showAsAction="ifRoom" : Only place this item in the Action Bar if there is room for it. 

android:showAsAction="Never" : Never place this item in the Action Bar. 

,如果你使用像:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

     <item 
      android:id="@+id/backup" 
      android:showAsAction="ifRoom" 
      android:title="backupLabel"/> 
     <item 
      android:id="@+id/restore" 
      android:title="restoreLabel"/> 
    </menu> 

那么它的外观:一个是在动作条&当您按下菜单按钮第二个是开放的。

enter image description here

注:其在< 3.0 Android系统工作正常,所以不必担心。但如果你有多个菜单项(多于3)与android:showAsAction="ifRoom"那么它会告诉你取决于设备屏幕尺寸

在写真

enter image description here

景观:

enter image description here


做上述,我会saggest你毕竟在使用下面的方法< 3.0 Android操作系统:

enter image description here

代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/file" 
     android:showAsAction="ifRoom" 
     android:title="file"> 

     <!-- "file" submenu --> 
     <menu> 
      <item 
       android:id="@+id/create_new" 
       android:title="create_new"/> 
      <item 
       android:id="@+id/open" 
       android:title="open"/> 
     </menu> 
    </item> 

</menu>