立即隐藏导航栏 Android
Hide navigation bar without delay in Android
我有一个简单的应用程序,它在后台加载 ImageView
。
<ImageView
android:id="@+id/splashimage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:src="@drawable/logo"
android:visibility="gone"/>
我正在尝试以全屏模式加载图像,这意味着没有导航栏和应用栏。我已经能够通过设置以下标志从 运行 应用程序的第一刻删除 te appbar
:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
然而,当我尝试对应用程序底部的导航栏执行相同操作时,在删除之前有一些延迟。因此,行为有点奇怪。它发生的是首先显示 navigation bar
,接下来它被隐藏并显示白色 background
,仅在一秒钟后图像填充空白。我附上一张照片,尽可能清楚地重现情况。
我的问题是,如何从一开始就显示覆盖 space 的图像,而不是遵循下面提到的 3 个步骤行为?
要隐藏导航栏,请使用此代码;
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
在遵循 Bruno 的评论后,我更新了我的代码并解决了错误:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
请注意,我不想完全删除 appbar
。因此,我没有在末尾包含以下行 | View.SYSTEM_UI_FLAG_FULLSCREEN);
。
更新
请注意,如果您希望您的布局显示在 appbar
下方而不是其下方,则需要删除此行
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
我有一个简单的应用程序,它在后台加载 ImageView
。
<ImageView
android:id="@+id/splashimage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:src="@drawable/logo"
android:visibility="gone"/>
我正在尝试以全屏模式加载图像,这意味着没有导航栏和应用栏。我已经能够通过设置以下标志从 运行 应用程序的第一刻删除 te appbar
:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
然而,当我尝试对应用程序底部的导航栏执行相同操作时,在删除之前有一些延迟。因此,行为有点奇怪。它发生的是首先显示 navigation bar
,接下来它被隐藏并显示白色 background
,仅在一秒钟后图像填充空白。我附上一张照片,尽可能清楚地重现情况。
我的问题是,如何从一开始就显示覆盖 space 的图像,而不是遵循下面提到的 3 个步骤行为?
要隐藏导航栏,请使用此代码;
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN |
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
在遵循 Bruno 的评论后,我更新了我的代码并解决了错误:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
请注意,我不想完全删除 appbar
。因此,我没有在末尾包含以下行 | View.SYSTEM_UI_FLAG_FULLSCREEN);
。
更新
请注意,如果您希望您的布局显示在 appbar
下方而不是其下方,则需要删除此行
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE