隐藏导航栏 - Android培训

时间:2014-02-17 21:05:42

标签: android

我目前正在进行Android培训,因为我正试图正确隐藏导航栏。在training documentation中声明:

  

您可以使用隐藏Android 4.0及更高版本的导航栏   SYSTEM_UI_FLAG_HIDE_NAVIGATION标志。这个片段隐藏了两个   导航栏和状态栏:

然后他们继续提供代码示例。

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

正如您所看到的那样,SYSTEM_UI_FLAG_FULLSCREEN标志仅在4.1中可用,但他们说这个代码块是4.1。这不会导致应用程序崩溃吗?我的代码块应该更像是:

View decorView = getWindow().getDecorView();
if (Build.VERSION.SDK_INT == 14 || Build.VERSION.SDK_INT == 15){
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
    decorView.setSystemUiVisibility(uiOptions);
} else if (Build.VERSION.SDK_INT >=16) {
    int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN;
    decorView.setSystemUiVisibility(uiOptions);
}

1 个答案:

答案 0 :(得分:1)

  

这不会导致应用程序崩溃吗?

不一定。

View.SYSTEM_UI_FLAG_FULLSCREEN之类的值为static final int。它们的实际数值被放入APK中,而不是在运行时查找的符号。因此,你不会因为那里有号码而崩溃。

设置未知标志时,setSystemUiVisibility()会做什么,可能会有所不同。通常,它会没问题,因为平台通常只将标志屏蔽到用于平台API级别的位范围,因此高阶位中发生的事情是无关紧要的。但是,在setSystemUiVisibility()的情况下,我没有特别尝试过这个。但是,如果Google的示例显示它在4.0上运行,并且如果您在4.0上运行它没有问题,那么您应该没问题。