进入沉浸式全屏模式时,状态栏为白色 [英] Status Bar is white when entering immersive full screen mode
问题描述
我根据
我的问题是选择了取消沉浸式
按钮,然后再次选择浸泡。尽管应用程序处于沉浸式模式,但状态栏处却是白色
这是我的隐藏和显示功能
private void hideSystemUI(){
//设置IMMERSIVE标志。
//将内容设置为显示在系统栏下方,以便在隐藏和显示系统栏时不会调整内容
//的大小。
视图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_FLN_VIEWN b | 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>
<按钮
android:id = @ + id / btn_immersive
android:layout_width = wrap_content
android:layout_height = wrap_content
android:text =使人身临其境 />
<按钮
android:id = @ + id / btn_cancel_immersive
android:layout_width = wrap_content
android:layout_height = wrap_content
android:text = can沉浸式 />
<按钮
android:id = @ + id / btn_show_dialog
android:layout_width = wrap_content
android:layout_height = wrap_content
android:text =显示对话框 />
< / LinearLayout>
< / FrameLayout>
我暂时解决了这个问题。在进入全屏模式后执行 requestLayout
这是我的代码
getWindow()。addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow()。clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
findViewById(android.R.id.content).requestLayout();
视图mDecorView = getWindow()。getDecorView();
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_UI_NAVIGATION
| ViewSYS。 SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
I make a simple projet about immersive full screen mode according to Using Immersive Full-Screen Mode
But first of all it perfect fine when I select Make Immersive
button, app is entering immersion fullscreen mode.
My problem is after selecting the Cancel Immersive
button, and select Make Immsersive
again. Although app is immersive mode, in the place of status bar is being white
Here is my hide and show functions
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);
}
and my activity_main.xml
is
<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>
I solved this for temporary. Doing requestLayout
after making fullscreen mode
Here is my codes
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);
这篇关于进入沉浸式全屏模式时,状态栏为白色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!