Как навсегда скрыть панель навигации в Jelly Bean (до KitKat) в Android Activity?
Я сделал полноэкранное приложение для Android, которое скрывает панель навигации и строку состояния, поддерживающую API 16 (начиная с Jelly Bean). Я знаю, что если я хочу скрыть панель навигации и строку состояния, начиная с KitKat, я могу использовать следующий код:
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
Но этот код не работает для Jelly Bean, он скрывает полосы только один раз, и они появляются снова, когда вы касаетесь экрана. Итак, я знаю, что следующий код поддерживает Jelly Bean, но он скрывает только строку состояния:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Может кто-нибудь показать мне способ скрыть панель навигации на Jelly Bean навсегда?
1 ответ
Попробуйте скрыть строку состояния / панель навигации еще раз после того, как она появится на экране.
Вот информация о том, как прослушивать изменения пользовательского интерфейса:
https://developer.android.com/training/system-ui/visibility.html
Соответствующая часть:
View decorView = getWindow().getDecorView();
decorView.setOnSystemUiVisibilityChangeListener
(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
// system bars are visible
// hide them again, maybe with some delay?
}
}
});