【问题标题】:How to Handle Both Action Bar and Menu Button?如何处理操作栏和菜单按钮?
【发布时间】:2014-11-18 15:34:30
【问题描述】:

对于我正在开发的游戏,我有一个游戏内菜单,当按下菜单按钮时会弹出。但是,我最近发现较新版本的 Android 没有菜单按钮,而是一个操作栏。

请注意,我没有使用实际的 Android 菜单。我所做的只是检测菜单按钮被按下,然后从游戏中处理事件。这意味着我需要的只是用户可以按下并检测到它被按下的东西。

所以我的问题是,如何同时支持菜单按钮和更新的操作栏?我希望我的应用支持 API 级别 7-current。

更新

好的,在阅读了that article 之后,我想重新提出我的问题。它说它“在系统导航旁边添加了动作溢出按钮”。我的清单有 android:minSdkVersion="7" android:targetSdkVersion="13" 但我的模拟器上没有出现溢出按钮。模拟器是 API 14,皮肤为 WSVGA

【问题讨论】:

  • 小心,越来越多的设备不再有菜单按钮了。
  • 使用actionbar(带有actionbar compact)然后覆盖onKeyDown并检查keyCode == KeyEvent.KEYCODE_MENU

标签: android


【解决方案1】:

This post in the Android Developers blog 很好地讨论了从旧的 菜单按钮 到使用新的 Action BarAction Overflow 的设计过渡列表。

它还包括一些关于在从 11 级之前过渡到新的操作栏时如何处理代码的具体建议。可能对您有帮助,但对于您的特定应用程序,您需要决定是否要显示操作栏。如果没有,那么您可能希望在游戏界面中添加一个按钮,该按钮复制具有菜单按钮的设备上的菜单按钮的功能。

【讨论】:

  • 好的,读完那篇文章后,我想重新提出我的问题。它说它“在系统导航旁边添加了动作溢出按钮”。我的清单有android:minSdkVersion="7" android:targetSdkVersion="13",但我的模拟器上没有出现溢出按钮。模拟器是带有皮肤 WSVGA 的 API 14。
  • @JesseJ 是的,我也有同样的问题。
  • 您在哪里寻找动作溢出按钮?在“13”级,我相信它会出现在系统导航的右侧(在屏幕底部而不是在操作栏上)。尝试定位级别“14”。你应该在操作栏上得到它。此外,听起来您根本不希望出现操作栏。
  • @JesseJ 我知道这有点晚了,但你没有得到溢出按钮的原因是你正在使用模拟器。如果你重新阅读文章说“唯一的例外是如果你将minSdkVersion设置为10或更低,将targetSdkVersion设置为11、12或13,并且你不使用ActionBar,系统会添加遗留溢出按钮在安卓 4.0 或更高版本的手机上运行您的应用时”
  • 嗯。所以基本上我无法测试它?好吧,这很糟糕。
【解决方案2】:

较新版本的 Android 确实有一个菜单按钮(请参阅下面的引用)。我认为您最好的选择是隐藏操作栏,并让您的游戏以与旧 Android 版本相同的方式使用菜单按钮。

引用Android 4.0 Compatibility Definition

7.2.3。导航键 Home、Menu 和 Back 功能对于 Android 导航范例至关重要。

设备实现必须让用户在运行应用程序时始终可以使用这些功能。

这些功能可以通过专用的物理按钮(例如机械或电容式触摸按钮)实现,也可以通过 使用专用的软件按键、手势、触摸屏等实现。Android 4.0 支持这两种实现。

还有:

设备实现必须向应用程序提供一个菜单键 targetSdkVersion 10.

【讨论】:

  • 我的程序通过onKeyDown寻找菜单按钮。如果没有物理菜单按钮,我该如何让它工作?如果没有菜单按钮,我该如何显示它?
  • 如果软菜单按钮在按下时没有生成onKeyDown,我不知道。你有可以测试的物理设备吗?
  • 我的实体手机是Android 2.2,没有看到软菜单按钮4.0
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
相关资源
最近更新 更多