【Interface&navigation】隐藏导航栏(52)


本课程介绍如何隐藏Android 4.0(API级别14)中引入的导航栏。

尽管本课程重点介绍隐藏导航栏,但您应该将应用程序设计为同时隐藏状态栏,如隐藏状态栏中所述。隐藏导航和状态栏(同时仍然可以随时访问它们)使内容使用整个显示空间,从而提供更加身临其境的用户体验。
【Interface&navigation】隐藏导航栏(52)
图1.导航栏。

隐藏导航栏


您可以使用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);

请注意以下事项:

使用此方法,触摸屏幕上的任何位置都会导致导航栏(和状态栏)重新出现并保持可见状态。用户交互导致标志被清除。
清除标志后,如果要再次隐藏栏,则应用程序需要重置它们。有关如何监听UI可见性更改的讨论,请参阅响应UI可见性更改,以便您的应用可以相应地做出响应。
你设置UI标志的地方有所不同。如果您在活动的onCreate()方法中隐藏系统栏 并且用户按下Home,系统栏将重新出现。当用户重新打开活动时,onCreate() 将不会被调用,因此系统栏将保持可见。如果您希望系统UI更改在用户导入和导出活动时保持不变,请在onResume() 或中设置UI标记 onWindowFocusChanged()。
setSystemUiVisibility()只有在您调用它的视图可见时,该方法才有效。
导航远离视图会导致标记设置setSystemUiVisibility() 被清除。

使内容出现在导航栏后面


在Android 4.1及更高版本中,您可以将应用程序的内容设置为显示在导航栏后面,以便在导航栏隐藏和显示时不会调整内容的大小。为此,请使用 SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION。您可能还需要使用它 SYSTEM_UI_FLAG_LAYOUT_STABLE来帮助您的应用程序保持稳定的布局。

当您使用这种方法时,您有责任确保应用程序UI的关键部分最终不会被系统栏覆盖。有关此主题的更多讨论,请参阅 隐藏状态栏课程。

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Interface&navigation】隐藏导航栏(52)

猜你喜欢

转载自blog.51cto.com/4789781/2163688