如何处理导航栏?

时间:2014-12-15 08:48:33

标签: android reflection navigationbar

华为Mate7等设备的导航栏如下图所示。 我的问题: 1,如何获得导航栏的高度? 2,导航栏显示和隐藏时如何获取通知?

我尝试反思找到一些有用的信息,失败了。

enter image description here

1 个答案:

答案 0 :(得分:0)

获得身高很容易:

    Resources resources = getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
    if (resourceId > 0)
    {
        height = resources.getDimensionPixelSize(resourceId);
    }

这将返回导航栏的高度(以像素为单位)。

至于隐藏的通知,我不相信会有事件发生。您必须明确告诉您的应用隐藏导航栏。它并不隐藏在它自己的身上。

检测是否有硬件菜单按钮的其他代码:

if (!ViewConfiguration.get(MainActivity.this).hasPermanentMenuKey() )
{
    Resources resources = getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
    if (resourceId > 0)
    {
        height = resources.getDimensionPixelSize(resourceId);
    }
}

这可以告诉您大多数手机上是否有硬件菜单按钮。某些型号仍会报告没有菜单键。在这些情况下,您必须设计一些东西来了解那些做到这一点的模型并对其进行说明。