以编程方式确定Android设备是否有菜单按钮的方法?

时间:2011-03-24 20:52:07

标签: android tablet

我需要补偿Android 3平板电脑上缺少物理(甚至“软”)菜单按钮。我正在处理的应用程序通常会隐藏其活动的标题栏,但如果我希望操作栏出现在平板电脑上,我就无法这样做。我可以使用API​​中的某些内容来确定设备是否有菜单按钮吗?

如果我找不到这样的功能,我唯一想到的就是永远不要隐藏Android 3.0及更高版本的标题栏,但这有两个原因困扰我:

  1. 我相信Android 3.0(或更高版本的API)最终会支持手机,可能会有菜单按钮
  2. 我不想对SDK版本进行硬编码(也许我永远不会隐藏Android 3.0及更高版本的标题栏,但我冒着不在手机上隐藏标题栏的风险)

3 个答案:

答案 0 :(得分:5)

LeffelMania有正确的想法,但有一点需要注意:如果您定位SDK 11(3.0)并使用无标题栏主题或覆盖某种自定义标题,您将只是简单的菜单,因为在目标设置为11的Honeycomb设备上,选项菜单位于标题栏本身,而不是底部状态栏中的假菜单按钮。所以要小心! (您可以通过设置较低的目标或将样式资源定位到v11来解决此问题,以便在这种情况下使用带有标题栏的Holo主题之一)。

答案 1 :(得分:2)

弃用:鉴于对Android框架和设计指南的更改,此答案不再准确。


Android手机保证有菜单按钮。 Honeycomb之前的所有手机都有菜单按钮,Honeycomb具有永远存在的软件按钮。如果您使用与菜单按钮(onCreateOptionsMenu(),onOptionsItemSelected()等相关联的正确回调),您可以安全地在任何运行Android的设备上接收这些回调。

答案 2 :(得分:0)

从API级别14开始,ViewConfiguration.hasPermanentMenuKey()可用于指示是否存在永久菜单键。