質問: View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; view.setSystemUiVisibility(visibility); ```
回答: ボタン以外の画面に触れてもナビゲーションバーが出てこないようにするには、 `View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE` と指定すればいいようですね。ボタンを押したときには、 `View.SYSTEM_UI_FLAG_VISIBLE` と指定することで表示させられます。 なお、SYSTEM_UI_FLAG_IMMERSIVEはAPI 19で追加されたフラグなので、minSdkVersionを19以上にしなければ使えません。 ただ、これだとナビゲーションバー再表示のときにボタンの描画位置がずれてしまいますね。SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATIONを合わせてセットすると、「ナビゲーションバーが非表示である前提でレイアウトする」という意味になるので、これを組み合わせると良さそうな感じです。 ナビゲーションバー非表示では `View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE` ボタンを押したときは `View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION` という指定の仕方にすると、再表示のときにずれずに済むようです。 (参考) KitKat (Android 4.4) の UI について - Y.A.M の 雑記帳