我正在编写一个带有透明导航栏的 Android 应用程序。要相应地调整布局,我需要知道设备是否有软件按钮或硬件按钮。
在我的研究过程中,我遇到了以下解决方案:
boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
这种方法不适用于一些没有菜单键但仍有硬件按钮的新设备,例如 Samsung Note 4 或 HTC One。
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
boolean hasHardwareButtons = hasBackKey && hasHomeKey;
这并不适用,因为某些设备(如 Sony Xperia Z3 Compact)虽然具有软件导航栏,但会返回 true。
有没有靠谱的方法可以判断是否有实体按键或者软件导航栏?
最佳答案
参见 this answer .您可以获得显示器的实际高度(以像素为单位),然后获取您的应用可用的高度,并确定设备是否具有包含这些值的屏幕导航栏。
关于android - 检查 Android 设备是否有软件或硬件导航按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28406506/