3

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

4

2 回答 2

2

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

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

请注意,此技术仅适用于 API 14+(ICS、JB)。没有任何设备 pre-API-11 有菜单按钮,因此只有 API 11-13 没有检查;请记住,这 3 个 API 级别目前仅占Android 用户的 2.3%

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

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

没有办法检查硬件搜索按钮(我也会假设 home/back),如此处所示。(也在此处;该线程提出了一种替代方法,尽管我不确定它是否适用于您的情况。)

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

所以,这是我的建议:

于 2012-08-20T06:11:32.297 回答
0

据我记得,底部的虚拟按钮仅适用于 android 版本 3.0 (Honeycomb) 及更高版本。至于身高问题,我从来没有真正研究过。

于 2012-08-20T03:53:30.283 回答