Edited at

ステータスバーを非表示にして全画面にする一番簡単な方法


はじめに

アプリのステータスバーを非表示にする方法で、(多分)一番簡単な方法を見つけたので、備忘録を残そうと思います。🙇‍♂️


ステータスバーとは

Screenshot_20190815-024613.png

画面上部の濃い緑になっているところがステータスバーですね!


実装

今回は Hide the status bar を見ながら実装しました。(本家のリファレンスが充実しているので勉強になります)

リファレンスでは Android 4.0 以前と Android 4.1 以降の例が載っているのですが、今記事では Android 4.1 以降のやり方しか書きませんので、4.0 以前のやり方も気になる方は本家のリファレンスを参考にしていただければと思います。🙇‍♂️


コードで非表示

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_FULLSCREEN

// supportActionBar?.hide() // toolbar を非表示にする。必要に応じて使用する

上記のコードを非表示にしたいActivityに追加すれば完成です。

簡単ですね。実質1行です。👏👏


コードで実装する上での4つのポイント


  1. UIのフラグがクリアされてしまった場合は再度アプリでフラグをリセットしてあげる必要がある。アプリのUIの可視性の変化を監視する方法はRespond to UI visibility changesを参照してください。


  2. onCreate()でしか上記のコードを呼び出していない場合、ユーザーがバックグラウンドにアプリを入れると再度表示されてしまう。なので、ステータスバーの状態を保持したい場合は、onResume()onWindowFocusChanged()などで設定する必要がある。


  3. setSystemUiVisibility()は呼び出し元のViewがVisibleの時にのみ有効。

  4. 呼び出し元のViewから離れた場合はsetSystemUiVisibility()がクリアされる。


values/styles.xmlで非表示


values/styles.xml

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


上記の属性値を追加するだけでも全画面モードになります。👏👏👏

バックグラウンド→フォアグラウンドにしても全画面を保ったままになります。

画面ごとに全画面にするかどうかが決まっている場合は style に追加した方が簡単かと思います。🤔


最後に

ネットの記事を探し回っても全然うまくいかなく、本家を探したら普通に記事があってちゃんと公式を見ない

といけないなぁと思いました。😢

やはり困った時は公式に頼るのが一番いいですね。😂