ナビゲーションバーを非表示にする|Android開発

      2018/09/13

自作のActivityナビゲーションバー(画面下部に表示される3つのボタン領域)やステータスバー(画面上部の通知領域)を非表示にする方法です。
完全に非表示とすることは出来ません。画面タップや画面下から上へのスライド操作でナビゲーションバーが表示されます。

ナビゲーションバー

ナビゲーションバーとステータスバーを非表示にする

この場合、画面タップでナビゲーションバーとステータスバーが表示されます。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_camera_preview);

    View decor = getWindow().getDecorView();
    // hide navigation bar, hide status bar
    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN);

}

ナビゲーションバーを非表示にする

8行目を以下の様に変更します。

    // hide navigation bar, show status bar
    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

ステータスバーを非表示にする

8行目を以下の様に変更します。

    // show navigation bar, hide status bar
    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);

タップでナビゲーションバーが表示されないようにする。

8行目を以下の様に変更します。
画面下から上へのスライド操作でナビゲーションバーが表示されます。

    // hide navigation bar, show status bar. don't show navigation when tapped.
    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE);
    // hide navigation bar, hide status bar. don't show navigation when tapped.
    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE);

一定時間後にナビゲーションバーを非表示にする

8行目を以下の様に変更します。
画面下から上へのスライド操作でナビゲーションバーが表示されますが一定時間経つと再度、非表示になります。
ナビゲーションバーやステータスバーが透過で被さるのでレイアウトが崩れません。
なお、FREETEL UIスワップアップランチャーなどがONになっていると効かないようです。(View.SYSTEM_UI_FLAG_IMMERSIVEと同じ動作になる)

    // hide navigation bar, hide status bar. don't show navigation when tapped.
    decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

 - Android