Android - 具有沉浸式全屏模式的DrawerLayout问题

时间:2017-12-08 21:53:05

标签: android navigation-drawer fullscreen drawerlayout android-immersive

我正在使用带抽屉的全屏沉浸式模式。问题是在添加模式后,抽屉在顶部显示阴影,在底部显示空白空间,就好像它仍然认为状态栏和导航栏存在一样。这可以在下面的照片中看到: enter image description here

我的活动布局:

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

进入沉浸式模式的代码:

@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)
        );
    }
}

提前致谢

0 个答案:

没有答案