如何强制操作栏溢出图标显示

我想强制溢出图标始终显示在操作栏(假设有溢出项目)。 在带有菜单button的模型上,有时不会出现溢出图标,用户必须点击设备菜单button以获取其余的操作菜单项。 用户不断抱怨。

请注意,对于上下文菜单,不pipe设备是否具有内置的菜单button,溢出图标总是显示。

我意识到强制溢出图标出现在操作栏将重复“物理”的function。 您可能会认为违反了Androiddevise准则。 在我看来,虽然,用户赢了。 他们说这很混乱,我相信他们是对的。

恭喜! 你赢了!

从Android 4.4开始,无论设备是否具有物理菜单button,操作栏中的可供性都将存在。 谷歌目前的兼容性定义文件现在更强有力地反对有一个专门的菜单button。

开发人员过去使用过的黑客行为是:

try { ViewConfiguration config = ViewConfiguration.get(this); Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); if (menuKeyField != null) { menuKeyField.setAccessible(true); menuKeyField.setBoolean(config, false); } } catch (Exception e) { // presumably, not relevant } 

这不应该需要在Android 4.4 +,虽然有exception处理程序,我不会期望任何特定的问题,如果你运行它,并且有一天,他们摆脱sHasPermanentMenuKey彻底。

就我个人而言,我仍然不会改变Android 4.3及更低版本的内容,因为我怀疑这是一个尴尬的情况,您将replace关于没有菜单的投诉,并指出同一菜单的重复版本。 这就是说,由于这是现在官方认可的行为,所以我在开发人员方面没有问题,以便在旧设备上保持一致。

就我提出的关于这个问题的问题给评论者一个帽子小贴士,指出这个改变。

这可能是另一个工作,这真的帮助了我。 保持一个三点可绘制并作为一个菜单项。

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/saveDetails" android:showAsAction="always" android:title="@string/save"/> <item android:id="@+id/menu_overflow" android:icon="@drawable/dts" android:orderInCategory="11111" android:showAsAction="always"> <menu> <item android:id="@+id/contacts" android:showAsAction="never" android:title="Contacts"/> <item android:id="@+id/service_Tasks" android:showAsAction="never" android:title="Service Tasks"/> <item android:id="@+id/charge_summary" android:showAsAction="never" android:title="Charge Summary"/> <item android:id="@+id/capture_signature" android:showAsAction="never" android:title="Capture Signature"/> </menu> </item> </menu>