检查导航栏的可见性

时间:2017-02-20 05:14:22

标签: java android android-studio

我一直在研究Android应用程序项目,并尝试在onCreate()时检测导航栏(屏幕上的)的可见性,以确定屏幕高度mScreenHeight。简而言之,我们的想法是如何检查导航栏是否在屏幕上可见。 到目前为止,我使用了这段代码:

Point screenFull = new Point() , screenNavBar = new Point();
getActivity().getWindowManager().getDefaultDisplay().getRealSize(screenFull);
getActivity().getWindowManager().getDefaultDisplay().getSize(screenNavBar);

View decorView = getActivity().getWindow().getDecorView();
if ((decorView.getSystemUiVisibility() & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0 ) {
    mScreenHeight = screenNavBar.y;
} else {
    mScreenHeight = screenFull.y;
}

但每次应用程序运行时,它总是会给出屏幕高度的结果,就像导航栏可见一样,尽管我已经隐藏了导航栏。我已经上网,没有找到任何密切的答案。我很感激帮助。

1 个答案:

答案 0 :(得分:0)

如果"已经隐藏了导航栏",你的意思是你先前在onCreate()中设置了沉浸式模式,那么我认为你可能只需要在活动结束后再进行检查。有机会激活模式。尝试将支票移入onResume(),如果不起作用,请在几秒钟后再尝试检查。

我发现沉浸式模式设置非常难以使用,具体取决于您支持的API级别,尤其是您在亚马逊的建设时。