34

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

4

3 回答 3

46

操作溢出菜单仅在设备上没有可用的硬菜单按钮时可用。我在“用户界面”>“操作栏”下的“框架主题”中发现了这一点,请在此处查看第三个项目符号。

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

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

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

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

于 2012-01-27T22:23:00.290 回答
12

好的,这很简单,但很难弄清楚。

您首先需要一个要用作溢出充气器的菜单项。例子

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

沃拉!你有一个溢出菜单!希望我能帮到你。:)

于 2013-02-13T19:07:11.943 回答
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>

于 2013-10-30T13:03:25.447 回答