Android action bar compat
可以吗?在较旧的设备(3.0 之前)上,不适合操作栏的项目仅在按下菜单键时显示,我希望将这些项目分组在操作栏的溢出菜单中。
3 回答
操作溢出菜单仅在设备上没有可用的硬菜单按钮时可用。我在“用户界面”>“操作栏”下的“框架主题”中发现了这一点,请在此处查看第三个项目符号。
有一个由Jake Wharton编写的动作栏库,名为 ActionBarSherlock。也许即使在较旧的设备(包括硬菜单按钮)上,这也可以为您提供操作溢出菜单样式,但是我没有对此进行研究。
编辑: ActionBarSherlock 4.0(目前是一个候选版本)内置了强制动作溢出的功能。如果您想自己扩展 ActionBarCompat 示例,您可以查看 github 以了解 Jake 是如何实现它的。我建议只是考虑一起使用他的图书馆,因为它做得很好。
如果您选择使用 Jake 的库,请考虑将 Activity 主题设置为 @style/Theme.Sherlock.ForceOverflow 以在旧设备上强制溢出菜单。
Edit2:在带有硬件菜单按钮的设备上使用ForceOverflow
主题会导致问题(示例 #1)。因此,Jake Wharton 将ForceOverflow
在未来的版本中删除。
好的,这很简单,但很难弄清楚。
您首先需要一个要用作溢出充气器的菜单项。例子
<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"
沃拉!你有一个溢出菜单!希望我能帮到你。:)
按照 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>