При разработке приложения для опроса клиентов для планшета я понял, что мне нужно отключить панель уведомлений и скрыть нижнюю навигацию на всякий случай, для всех этих забавных клиентов, пытающихся быть умными ** *.
Я работаю с нерутированным устройством, поэтому использование отражения, как в этом ответе, не вариант.
И хотя добавление
getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);
поможет, оно также отключит все остальное.
Я начал с запроса полноэкранного режима для приложения только для того, чтобы скрыть верхнюю панель, но это ничего не сделало с нижней панелью навигации.
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Поэтому я прибегнул к использованию иммерсивного полноэкранного режима. Он скрывает как верхнюю, так и нижнюю панели, но когда пользователь проводит пальцем вверх или вниз, они снова появляются.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
mDecorView.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);
}
}
Устройство работает на Android 4.4