Posted at

NavigationViewでKitKatでもStatusBarを透過させる

More than 3 years have passed since last update.


NavigationView なしの場合

support.v4.widget.DrawerLayout で Navigation 部分を ListView などで実装するパターンのことです。

この場合、以下のような設定で KitKat で StatusBar を colorPrimaryDark に指定した色に出来ます。

values-v19/styles.xml

  <style name="AppTheme"

parent="Theme.AppCompat.Light.NoActionBar">

<item name="colorPrimary">@color/brand_primary</item>
<item name="colorPrimaryDark">@color/brand_primary_dark</item>
<item name="colorAccent">@color/brand_accent</item>

<item name="android:windowTranslucentStatus">true</item>

</style>


NavigationView ありの場合

support.v4.widget.DrawerLayout で Navigation 部分を support.design.widget.NavigationView で実装するパターンのことです。

この場合、NavigationView なしの場合に設定したものに加え、以下のような設定で KitKat で StatusBar を colorPrimaryDark で指定した色に出来ます。

必要なのは、 android:fitsSystemWindows="false" の記述でした。これが無いと単に半透明にしかなりません。

activity_main.xml

<android.support.v4.widget.DrawerLayout

xmlns:android="http://schemas.android.com/apk/res/android"
...
>
...

<android.support.design.widget.NavigationView
android:layout_gravity="start"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false"
app:headerLayout="@layout/header_layout"
app:menu="@menu/navi_menu"
/>

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


参考にしたコード

Navigation-Drawer-Android-Design-Support-Library / @Dahnark