このレッスンでは、Android 4.0(API レベル 14)以降でシステムバー(ステータスバーやナビゲーション バー)を暗くする方法について説明します。Android には、以前のバージョンでシステムバーを暗くする機能は用意されていません。
この方法を使用すると、コンテンツのサイズは変更されませんが、システムバーのアイコンが視覚的に後退します。ユーザーが画面のステータスバーまたはナビゲーション バー領域のいずれかに触れると、両方のバーが完全に表示されます。このアプローチの利点は、バーはまだ表示されているが、その詳細は不明瞭であるため、バーに簡単にアクセスできる機会を犠牲にすることなく、没入感のあるエクスペリエンスを実現できることです。
ステータスバーやナビゲーション バーを省略表示にする
次のように SYSTEM_UI_FLAG_LOW_PROFILE
フラグを使用すると、ステータスバーとナビゲーション バーをグレー表示にできます。
Kotlin
// This example uses decor view, but you can use any visible view. activity?.window?.decorView?.apply { systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE }
Java
// This example uses decor view, but you can use any visible view. View decorView = getActivity().getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE; decorView.setSystemUiVisibility(uiOptions);
ユーザーがステータスバーまたはナビゲーション バーに触れるとすぐにフラグがクリアされ、バーがグレー表示になります。フラグがクリアされた後でバーを再度暗くするには、アプリでフラグをリセットする必要があります。
図 1 は、ナビゲーション バーがグレー表示になったギャラリー画像を示しています(ギャラリー アプリではステータスバーが完全に非表示になり、暗くなりません)。ナビゲーション バー(画像の右側)には、ナビゲーション コントロールを表すかすかに白い点が表示されます。
同じギャラリー画像で、システムバーが表示されている状態を図 2 に示します。
ステータスバーやナビゲーション バーを表示する
setSystemUiVisibility()
で設定されたフラグをプログラムでクリアするには、次のようにします。
Kotlin
activity?.window?.decorView?.apply { // Calling setSystemUiVisibility() with a value of 0 clears // all flags. systemUiVisibility = 0 }
Java
View decorView = getActivity().getWindow().getDecorView(); // Calling setSystemUiVisibility() with a value of 0 clears // all flags. decorView.setSystemUiVisibility(0);