我根据Using Immersive Full-Screen Mode制作了一个关于沉浸式全屏模式的简单项目
但首先,当我选择Make Immersive
按钮时,应用程序正在进入沉浸式全屏模式,效果非常好。
我的问题是在选择Cancel Immersive
按钮后,然后再次选择Make Immersive
。虽然应用程序是沉浸式模式,但状态栏的位置是白色的
这是我的隐藏和显示功能
private void hideSystemUI() {
// Set the IMMERSIVE flag.
// Set the content to appear under the system bars so that the content
// doesn't resize when the system bars hide and show.
View mDecorView = getWindow().getDecorView();
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
private void showSystemUI() {
View mDecorView = getWindow().getDecorView();
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
我的activity_main.xml
是
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.aungmyolwin.immsersivedelete.MainActivity">
<Button
android:id="@+id/btn_immersive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="make immersive" />
<Button
android:id="@+id/btn_cancel_immersive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="cancle immersive" />
<Button
android:id="@+id/btn_show_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="show dialog" />
</LinearLayout>
</FrameLayout>
最佳答案
我暂时解决了这个问题。设置全屏模式后执行 requestLayout
这是我的代码
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
findViewById(android.R.id.content).requestLayout();
View mDecorView = getWindow().getDecorView();
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
关于android - 进入沉浸式全屏模式时状态栏为白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48660224/