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

mar*_*igo 34 android overflow android-4.0-ice-cream-sandwich actionbarsherlock android-actionbar

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

esi*_*lac 46

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

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

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

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

Edit2:在具有硬件菜单按钮的设备上使用ForceOverflow主题导致问题(示例#1).因此,杰克沃顿将ForceOverflow在未来版本中删除.

  • @EricNovins,ABS图书馆提供他正在寻找的东西.如果他选择不使用该库,则为他提供了以自己的方式扩展ActionBarCompat的方向. (6认同)
  • 你没有仔细阅读这个问题.他正在使用官方的android动作条库来获得向后和向前的兼容性.他想强制Android 4.0下面的溢出选项,而不是将他的旧菜单变成ICS上正常运行的菜单. (2认同)

Lev*_*8er 12

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

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

<item
        android:id="@+id/a_More"
        android:icon="@drawable/more"
        android:showAsAction="always"
        android:title="More">
        </item>
Run Code Online (Sandbox Code Playgroud)

获得项目后,在溢出菜单中添加包含所需项目的子菜单.例:

<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>
Run Code Online (Sandbox Code Playgroud)

点击这将膨胀其他项目.我的应用程序正在使用ActionBarSherlock 4.0,因此在此之前,您将需要访问"SplitActionBar".(仍将在默认的android Actionbar上工作)

方法如下:在你的AndroidManifest.xml文件中,你需要在你需要溢出菜单的活动下添加这个代码.老实说,如果你有动作栏拆分,我不喜欢它,但我更喜欢它.

android:uiOptions="splitActionBarWhenNarrow"
Run Code Online (Sandbox Code Playgroud)

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

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


har*_*iss 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>
Run Code Online (Sandbox Code Playgroud)