ActionBarSherlock项目没有出现溢出

时间:2012-06-30 10:59:44

标签: android actionbarsherlock

我正试图通过ABS将我的应用程序重新设置为ICS的外观和感觉。获取ActionBar本身非常简单明了,但是添加菜单项却没有。

我的代码如下:

    @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>

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

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

这一切都有意义吗?

我错过了什么?

3 个答案:

答案 0 :(得分:4)

只需使用此代码boath菜单就在ActionBar上:

<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.

如果您使用like:

<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> 

然后它看起来:一个在ActionBar&amp;当您按下菜单按钮时,第二个打开。

enter image description here

注意:它的工作正常&lt; 3.0 Android操作系统,所以不用担心。但如果你有多个菜单项(超过3个)与android:showAsAction="ifRoom",那么它会显示取决于设备屏幕尺寸

在Protrait中

enter image description here

景观中的

enter image description here


完成上述所有操作后,我会在下面的方式中使用&lt; 3.0 Android OS:

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>

答案 1 :(得分:1)

ABS 4.1.2中已删除

ForceOverflow,创建者发现它永远不会进入(参见更改日志备注)。我很自信你看到了预期的行为;任何带有运行ICS +的菜单按钮的设备(例如我的Nexus S)都不会显示溢出菜单,因为有一个专用的硬件键 - “菜单”按钮。

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

答案 2 :(得分:0)

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

  • 编辑现有的AVD

Edit an existing AVD

  • 克隆现有设备配置文件

Clone an existing device profile