如何在android actionbar compat上强制溢出菜单?

时间:2012-01-06 13:07:10

标签: android overflow android-4.0-ice-cream-sandwich android-actionbar actionbarsherlock

Android action bar compat
可能吗?在较旧的设备(3.0之前版本)上,只有在按下菜单键时才显示不适合操作栏的项目,我希望这些项目在操作栏的溢出菜单中分组。

3 个答案:

答案 0 :(得分:46)

仅当设备上没有可用的硬菜单按钮时,才能使用操作溢出菜单。我在用户界面下的框架主题中发现了这一点>操作栏,查看第3个项目here

有一个名为ActionBarSherlock的Jake Wharton编写的操作栏库。也许这可以为您提供动作溢出菜单样式,即使在旧设备(包括硬菜单按钮)上也是如此,但是我还没有考虑过这个。

编辑:ActionBarSherlock 4.0(目前是候选版本)内置了强制操作溢出的功能。如果你想自己扩展ActionBarCompat示例,你可以看看github来了解Jake如何实现它。我建议只考虑一起使用他的库,因为它做得非常好。

如果您选择使用Jake的库,请将活动主题设置为@ style / Theme.Sherlock.ForceOverflow以强制旧设备上的溢出菜单。

Edit2 :使用ForceOverflow主题会在具有硬件菜单按钮的设备上导致问题(example #1)。因此,Jake Wharton将在未来的版本中删除ForceOverflow

答案 1 :(得分:12)

好的,这很简单,但很难弄明白。

首先需要一个要用作溢出inflater的菜单项。实施例

<item
        android:id="@+id/a_More"
        android:icon="@drawable/more"
        android:showAsAction="always"
        android:title="More">
        </item>

获得商品后,在溢出菜单中添加包含所需商品的子菜单。例如:

<item
    android:id="@+id/a_More"
    android:icon="@drawable/more"
    android:showAsAction="always"
    android:title="More">
    <menu>
        <item
            android:id="@+id/aM_Home"
            android:icon="@drawable/home"
            android:title="Home"/>
    </menu>
</item>

点击此按钮会使其中的其他项目膨胀。我的应用程序正在使用ActionBarSherlock 4.0,因此在此之前,您将需要访问“SplitActionBar”。 (仍然适用于默认的android Actionbar)

以下是: 在AndroidManifest.xml文件中,您需要在需要溢出菜单的活动下添加此代码。 老实说,如果你有动作栏分开或不分开,那我应该没用。但是我更喜欢它。

android:uiOptions="splitActionBarWhenNarrow"

注意:您的溢出菜单膨胀的项目必须showAsAction="always"

Vwola!你有一个溢出菜单!希望我能帮助你。 :)

答案 2 :(得分:6)

根据LeviRockerSk8er的建议,我不得不在操作栏中有一个溢出菜单,如下所示:

这是“menu.xml”的代码:

<item
    android:id="@+id/web_clasica"
    android:icon="@drawable/ic_action_web_site"
    android:showAsAction="ifRoom"
    android:title="@string/menu_web"
    />
<item
    android:id="@+id/overflow_fijo"
    android:icon="@drawable/ic_action_core_overflow"
    android:showAsAction="always"
    android:title="@string/menu_email"
   >
   <menu>
    <item
    android:id="@+id/email"
    android:icon="@drawable/ic_action_new_email"
    android:showAsAction="ifRoom"
    android:title="@string/menu_email"
   />
    <item
    android:id="@+id/share"
    android:icon="@drawable/ic_action_share"
    android:showAsAction="ifRoom"
    android:title="@string/menu_share"
    />
    <item
    android:id="@+id/about"
    android:showAsAction="ifRoom"
     android:icon="@drawable/ic_action_action_about"
    android:title="@string/menu_about"/>
</menu>