【发布时间】:2016-06-08 09:54:22
【问题描述】:
我需要检查设备是否有软导航栏,我按照here的建议进行操作。
它很好用,除了在 onePlus 设备上,出于某种原因,这段代码:
int id = resources.getIdentifier("config_showNavigationBar", "bool", android");
return id > 0 && resources.getBoolean(id);
虽然显示了软导航栏,但返回 false。
知道如何获得正确的结果吗?
我不想计算实际宽度和可用宽度,这似乎是一项昂贵的操作。
谢谢。
【问题讨论】:
-
你有解决办法吗?
-
是的。最后,我使用了这段代码: public boolean hasNavBar() { Display d = getWindowManager().getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); d.getRealMetrics(dm); int realHeight = dm.heightPixels; int realWidth = dm.widthPixels; d.getMetrics(dm); int displayHeight = dm.heightPixels; int displayWidth = dm.widthPixels;返回 (realWidth - displayWidth) > 0 || (realHeight - displayHeight) > 0; } 这在所有设备上给出了最好的结果。
标签: android