ナビゲーションバーを非表示にする|Android開発
自作の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);