本课介绍如何隐藏导航栏
Android 4.0(API 级别 14)。
尽管本课重点介绍如何隐藏
您应将应用设计为隐藏状态栏
(如隐藏状态栏中所述)。
隐藏导航栏和状态栏(同时仍然便于访问)
让内容能够充分利用整个显示空间,从而提供更具沉浸感
用户体验。
图 1. 导航栏。
隐藏导航栏
您可以使用
SYSTEM_UI_FLAG_HIDE_NAVIGATION 标志。此代码段会隐藏
导航栏和状态栏:
Kotlin
window.decorView.apply {
// 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.
systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
}
Java
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);
请注意以下几点:
使用这种方法时,轻触屏幕上的任意位置都会使导航栏(以及
状态栏),使其重新显示并保持可见状态。用户互动会导致这些标记被
将被清除。
标记被清除后,在以下情况下,您的应用需要重置这些标记:
想要再次隐藏这些栏请参阅响应界面可见性更改,了解
讨论如何监听界面可见性更改,以便您的应用
做出相应的响应。
在不同的位置设置界面标记会产生不同的效果。如果您将系统栏隐藏在 activity 的
onCreate() 方法且用户按主屏幕按钮时,系统栏将
重新出现。当用户重新打开 activity 时,onCreate()
因此系统栏会一直显示如果您希望系统界面
会在用户进入和离开 activity 时保持不变,请在
onResume()
或 onWindowFocusChanged()。
只有 setSystemUiVisibility() 方法
会产生影响。
离开视图会导致标志
使用“setSystemUiVisibility()”设置
待清除。
让内容显示在导航栏后面
在 Android 4.1 及更高版本中,您可以将应用的内容设置为显示在后面
这样,内容的大小就不会随着导航栏的隐藏和隐藏而调整大小
节目。为此,请使用
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION。
您可能还需要使用
SYSTEM_UI_FLAG_LAYOUT_STABLE 来帮助您的应用保持
稳定的布局。
使用此方法时,您有责任确保关键部分
最终不会被系统栏覆盖。有关
有关该主题的讨论,请参阅
隐藏状态栏一课。