【问题标题】:ActionBarSherlock items not appearing in overflowActionBarSherlock 项目未出现在溢出中
【发布时间】:2012-06-30 10:59:43
【问题描述】:

我正在尝试使用 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" 那么这些项目会显示为操作项目 - 但不会出现在溢出中,这是我希望它们始终存在的地方。

这一切都有意义吗?

我错过了什么?

【问题讨论】:

标签: android actionbarsherlock


【解决方案1】:

只需在 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> 

它的样子:

因为如果你正在使用

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> 

然后它的外观:一个在 ActionBar 上,第二个在您按下菜单按钮时打开。

注意:它在 但是如果您有多个菜单项(超过 3 个)和 android:showAsAction="ifRoom",那么它会显示您 依赖在设备屏幕尺寸上

在 Protrait 中:

横向:


完成以上所有操作后,我会建议您在

代码:

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

【讨论】:

    【解决方案2】:

    ForceOverflow 已在 ABS 4.1.2 中被删除,创建者认为它不应该出现(请参阅更改日志注释)。我非常有信心您看到了预期的行为;任何带有运行 ICS+ 的菜单按钮的设备(例如我的 Nexus S)都不会显示溢出菜单,因为有一个专用的硬件键 - “菜单”按钮。

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

    【讨论】:

      【解决方案3】:

      您可能使用的是启用了硬件键盘而非软件的模拟器。要查看溢出菜单中的操作,请使用带有软水控件的模拟器。屏幕截图显示了两种方法。

      • 编辑现有的 AVD

      • 克隆现有的设备配置文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多