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