システムバーを淡色表示にする

このレッスンでは、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 は、ナビゲーション バーがグレー表示になったギャラリー画像を示しています(ギャラリー アプリではステータスバーが完全に非表示になり、暗くなりません)。ナビゲーション バー(画像の右側)には、ナビゲーション コントロールを表すかすかに白い点が表示されます。

システムバー

図 1. 省略表示状態のシステムバー

同じギャラリー画像で、システムバーが表示されている状態を図 2 に示します。

システムバー

図 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);