是否可以通过编程方式检测Android虚拟按钮?

时间:2012-08-20 03:18:50

标签: android button virtual

Android似乎在具有虚拟/屏幕按钮的设备上切断了底部100px。是否可以检测当前手机/平板电脑是否正在使用屏幕按钮,以便我可以计算丢失的空间?如果是这样,是否也可以获得按钮的高度?

2 个答案:

答案 0 :(得分:1)

您可以使用hasPermanentMenuKey()检查设备是否具有永久(硬件)菜单按钮。它可以用作以下内容:

boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();

请注意,此技术仅适用于API 14+(ICS,JB)。没有设备pre-API-11有菜单按钮,所以只留下没有检查的API 11-13;请注意,这3个API级别目前只有2.3% of the Android population

或者(虽然不可靠),您可以尝试搜索D-Pad:

boolean hasDpad = getResources().getConfiguration().naviation == Configuration.NAVIGATION_DPAD;

没有办法检查硬件搜索按钮(我会假设回家/回来),如here所示。 (还有here;这个帖子提出了一种替代方法,但我不确定它是否适用于您的情况。)

我将提到两件事:虚拟按钮永远不应该覆盖您的内容。它们会从设备窗口的高度减去(由显示器的指标获取),但如果您使用match_parent作为高度,它们将永远不会妨碍您的布局。其次,无法获取虚拟按钮栏的确切高度;它可能在构建之间改变。 Android API中也没有原生方式来获取“可用”屏幕空间(底部栏未覆盖的区域)。

所以,以下是我的建议:

答案 1 :(得分:0)

从我记忆中,底部的虚拟按钮仅在Android版本3.0(Honeycomb)及更高版本中。 至于高度问题,我从未真正研究过它。