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

标签 android button virtual

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

最佳答案

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

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

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

或者(虽然不可靠),您可以尝试搜索方向键:

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

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

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

那么,这是我的建议:

关于android - 是否可以通过编程方式检测 Android 虚拟按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12031923/

相关文章:

c# - 设计虚拟方法

android - 无法更新 HAXM : "Install Intel x86 Emulator Accelerator (HAXM installer) (revision: 6.2.1)" failed

java - 在社交媒体上分享之前为照片添加水印

Android - 如何在以编程方式按下按钮时更改按钮的背景图像?

android - Android日历标准按钮中的加号和减号按钮吗?

javascript - 通过 id javascript 填充文本字段

c++ - 警告 : direct base class inaccessible in derived due to ambiguity; is this serious?

c# - *虚拟*方法缺少 'await' 返回值?

android - 旋转Android上的 Activity 重启

javascript - 单击按钮更改单独 div 中的信息