处理新版Android(3.x及更高版本)中缺少的MENU按钮

Mic*_* A. 39 compatibility android android-3.0-honeycomb android-4.0-ice-cream-sandwich android-4.2-jelly-bean

我是Android <3.0中使用的菜单按钮的粉丝,因为它对我的游戏应用程序非常有用 - 它允许我采取重要但游戏玩法无关的功能(保存游戏,参考信息链接)并将其放置在它的某个地方没有弄乱主游戏界面,但仍然很容易访问(选项菜单).

这种键的使用成为3.0的问题,因为它删除了MENU按钮并用Action Bar替换它.动作栏真的不适合喜欢全屏运行的游戏,所以这真的很痛苦.没有操作栏 - 无法访问选项菜单.但是,我可能暂时忽略它,因为我在平板电脑上没有那么多用户,并且没有时间来测试它.

然而,ICS使这成为一个严重的问题,因为MENU按钮显然没有回来.现在我不仅要在平板电脑上处理这个问题,还要在手机上处理这个问题.

我对此问题的初步解决方案是在我的GUI中放置一个软按钮来替换硬菜单按钮

this.openOptionsMenu();
Run Code Online (Sandbox Code Playgroud)

一切都恢复到ICS的完美运作.

但是,这对Honeycomb不起作用.如果您没有可见的ActionBar,则调用openOptionsMenu绝对没有任何作用.

有关如何处理这个的任何想法?

  • 我想我总是可以回到使用TargetSDK <11(从而迫使ActionBar出现在平板电脑上),但据我所知,这只是将问题推向未来,我不愿意这样做.

  • 完全删除选项菜单,然后转到仅使用上下文菜单?[澄清:我的意思是,不是打开选项菜单 - 我只使用上下文菜单 - 至少现在 - 这些工作在所有设备上].

有兴趣听听其他人在整个选项菜单/ ActionBar混乱中遇到类似问题的决定.

hav*_*exz 19

让我分享另一个场景,即即使菜单按钮不是游戏,它也会变得很重要.

我有app实现自己的工具栏,其行为在某种程度上像ActionBar.好吧,我做了那个因为我的应用程序以1.5 sdk发布.那时候没有这样的概念.为了适应我的工具栏,我隐藏了默认的标题栏.但有些操作是通过Menu功能完成的.

现在,因为在Galaxy Nexus中没有菜单按钮,如果你没有使用ActionBar,这会伤害我,因为我的应用程序仍然支持1.5.

那么有各种各样的工作,但没有一个是容易的.

也就是说,我提出的唯一工作就是在用户工具栏上为用户提供所有选项,因此根本不需要菜单.我可以这样做,因为我只有两个不属于工具栏的动作.

在您的情况下,按钮上的上下文菜单在游戏中并不是一个糟糕的解决方案,因为与列表项上的上下文菜单相比,游戏将只有一个上下文运行,其中每个项都是不同的上下文.

BTW如果openOptionsMenu适用于ICS,你可以在一段时间后抛弃HoneyComb(即使现在用户群太低),然后尝试根据版本提供两个菜单.

编辑:还有另一种方法来获取下面导航栏中的MENU s/w按钮.只需将其设置targetSdkVersion为小于11.有关详细信息,请阅读整个soln.