如何定位带和不带软导航键的设备(即:Nexus 5、Galaxy S4)?
How to target devices with and without soft navigation keys (ie: Nexus 5, Galaxy S4)?
我到处寻找没有成功的答案。我正在使用 values-xxhdpi 文件夹为 nexus 5 设置我的应用程序布局尺寸,但是当我切换到 galaxy S4 模拟器(相同分辨率但没有软导航键)时,布局不再正常。
有没有办法定位具有相同分辨率的设备,无论是否有屏幕底部的软导航?
谢谢!
您可以检测设备是否具有硬件菜单键(可用于实现此目的的方法,例如 here 中描述)并自行应用一组不同的资源。
没有办法做到这一点 "automatically" 例如,通过强制应用程序使用不同的 drawable
文件夹。
使用:
ViewConfiguration.hasPermanentMenuKey()
注意
这仅适用于 SDK >= 14
已编辑:
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
if (hasBackKey && hasHomeKey) {
// no navigation bar, unless it is enabled in the settings
} else {
// 99% sure there's a navigation bar
}
我到处寻找没有成功的答案。我正在使用 values-xxhdpi 文件夹为 nexus 5 设置我的应用程序布局尺寸,但是当我切换到 galaxy S4 模拟器(相同分辨率但没有软导航键)时,布局不再正常。
有没有办法定位具有相同分辨率的设备,无论是否有屏幕底部的软导航?
谢谢!
您可以检测设备是否具有硬件菜单键(可用于实现此目的的方法,例如 here 中描述)并自行应用一组不同的资源。
没有办法做到这一点 "automatically" 例如,通过强制应用程序使用不同的 drawable
文件夹。
使用:
ViewConfiguration.hasPermanentMenuKey()
注意 这仅适用于 SDK >= 14
已编辑:
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
boolean hasHomeKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_HOME);
if (hasBackKey && hasHomeKey) {
// no navigation bar, unless it is enabled in the settings
} else {
// 99% sure there's a navigation bar
}