进入沉浸式全屏模式时,状态栏为白色 [英] Status Bar is white when entering immersive full screen mode

查看:151
本文介绍了进入沉浸式全屏模式时,状态栏为白色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我根据



我的问题是选择了取消沉浸式按钮,然后再次选择浸泡。尽管应用程序处于沉浸式模式,但状态栏处却是白色





这是我的隐藏和显示功能

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆