当我将TRANSLUCENT标志设置为Statusbar时,还有一个额外的状态栏覆盖导航视图

时间:2017-06-29 10:26:36

标签: android material-design statusbar

下面是我的xml布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto"
          android:id="@+id/sample_main_layout"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:theme="@style/ThemeOverlay.AppCompat.Dark" />

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

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

        <TextView
            android:padding="16dp"
            android:text="NavigationView在Toolbar下方"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </FrameLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_drawer_layout_one"
        app:menu="@menu/activity_drawer_layout_one_drawer"/>

</android.support.v4.widget.DrawerLayout>

你可以看到我在工具栏下面有一个drawlayout,问题是如果我将FLAG_TRANSLUCENT_STATUSFLAG_TRANSLUCENT_NAVIGATION设置到活动的窗口我得到另一个状态栏覆盖我的导航视图,只是如下: enter image description here

我使用下面的代码将它们半透明

    public static void transparentBars(Window window, int statusBarColor, int navBarColor) {
    window.requestFeature(Window.FEATURE_NO_TITLE);
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
            | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(statusBarColor);
    window.setNavigationBarColor(navBarColor);
}

我用谷歌搜索了很长时间,但失败了。希望你们能帮助我。

提前致谢!!!

0 个答案:

没有答案