如何强制在android操作栏compat溢出菜单?

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

动作溢出菜单仅在设备上没有硬菜单button时可用。 我在用户界面>操作栏下的框架主题中发现了这一点,请查看第3项。

有一个由杰克·沃顿 ( Jake Wharton)编写的动作栏库(ActionBarSherlock)。 也许这是能够为您提供一个动作溢出菜单样式,即使在较旧的设备(其中包括一个硬菜单button),但我没有看到这一点。

编辑: ActionBarSherlock 4.0(目前是一个候选版本)内置function强制行动溢出。 如果你想自己扩展ActionBarCompat的例子,你可以看看github了解Jake如何实现它。 我build议只是一起研究一下他的图书馆,因为它做得非常好。

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

编辑2:使用ForceOverflow主题导致与硬件菜单button的设备上的问题( 例如#1 )。 因此,杰克·沃顿将在未来的版本中删除ForceOverflow

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

你首先需要一个你想用来作为溢出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操作栏上工作)

操作方法如下:在你的AndroidManifest.xml文件中,你需要在你需要溢出菜单的行为下面添加这段代码。老实说,如果你有操作栏分裂或者不行,但我更喜欢它。

 android:uiOptions="splitActionBarWhenNarrow" 

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

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

按照LeviRockerSk8er的build议,我不得不在操作栏中设置一个溢出菜单:

这是“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>