システムバーを省略表示にする

このレッスンでは、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);