我怎么知道是否有导航栏?

How do I know if there is a navigation bar?

导航栏以透明方式绘制在我的activity之上,以便通过导航栏可以看到我的内容。这很好,我想要这样。但是,有两种类型的设备:

  1. 具有透明导航栏的设备
  2. 具有硬件导航栏的设备(如某些三星型号),其中的内容当然不会绘制在导航栏后面。

我如何知道我的应用 运行 所在的设备是上述类型 1? IE。我如何以编程方式获得 "is there a semi-transparent navigation bar put on top of my activity?"

的答案

您可以尝试类似的方法:

boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);

if(!hasMenuKey && !hasBackKey) 
{
    // Do whatever you need to do, this device has a navigation bar
}