StatusBar や AppBar を透過にする


StatusBar や AppBar を透過したいなと思ったときに毎回調べてはハマったりしているので自分用にメモとして残したいと思います。

前提

~.NoActionBar を継承したスタイルはどこかで設定して自前で ActionBar を実装している前提です。

StatusBar

AndroidManifest にある該当の Activity の theme に以下を設定します。

<style name="TranslucentStatusBar">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

v23 以降はコレを設定します。

<style name="TranslucentStatusBar">
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowLightStatusBar">true</item>
</style>

Y.A.M の 雑記帳: StatusBar 透明化の正しい方法 にとても詳しく書かれています。ちゃんと理解したい人はみてください。

AppBar

AppBarLayouttheme として以下を設定します。

<style name="TranslucentAppBar">
    <item name="colorPrimary">@android:color/transparent</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="windowActionBarOverlay">true</item>
</style>

おそらく elevation が残るので、レイアウトに直接 app:elevaiton="0dp" を設定します。

戻るボタン

Toolbar に以下を theme として設定します。もしかしたら他にいい方法あるかもしれないので知っている人は教えてください

<style name="ToolBar">
    <item name="navigationIcon">@drawable/ic_close_white</item>
</style>