Android - DrawerLayout issue with Immersive Full-Screen Mode

1.1k views Asked by At

I am using full-screen immersive mode with a drawer. The issue is that after adding the mode, the drawer shows a shadow a the top and a blank space at the bottom as if it still thinks that the status bar and the navigation bar are present. This can be seen in the following photo: enter image description here

My activity layout:

<FrameLayout 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"
    android:keepScreenOn="true"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include layout="@layout/custom_toolbar" android:id="@+id/app_toolbar"/>

        <android.support.v4.widget.DrawerLayout
            android:id="@+id/main_activity_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <FrameLayout
                android:id="@+id/fragment_container"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

            <FrameLayout
                android:id="@+id/activity_content"
                android:layout_width="match_parent"
                android:layout_height="match_parent"/>

            <android.support.design.widget.NavigationView
                android:id="@+id/drawer_view"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                android:background="@android:color/white"
                app:headerLayout="@layout/header_drawer"
                app:menu="@menu/menu_drawer" />
        </android.support.v4.widget.DrawerLayout>
    </LinearLayout>

    <include android:id="@+id/activity_progress" layout="@layout/custom_progress" android:visibility="gone"/>
</FrameLayout>

The code for entering immersive mode:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().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
                        | (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT ? View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY : 0)
        );
    }
}

Thanks in advance

0

There are 0 answers