Существует полноэкранная активность со следующими блоками кода, используемыми для достижения того же:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
// ….
}
@Override
protected void onResume() {
Log.i(TAG, "onResume");
super.onResume();
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}
Однако, когда отображается пользовательское диалоговое окно или если текст редактирования получает фокус, нижняя панель навигации становится видимой и остается на месте. Официальный документ говорит:
Если на переднем плане появляется новое действие или диалоговое окно, которое получает фокус и частично закрывает выполняемое действие, скрытое действие теряет фокус и переходит в состояние «Приостановлено». Затем система вызывает для него onPause().
Когда охваченная активность возвращается на передний план и восстанавливает фокус, она вызывает onResume().
Но onResume()
не вызывается, когда диалог теряет фокус (проверено по логам).
Также попытался добавить следующий код в onCreate() пользовательского диалога:
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
После добавления приведенного выше кода панель навигации скрывается, когда пользовательский диалог находится на переднем плане, но когда он выходит из фокуса, панель навигации снова появляется на экране.
Также попытался установить полноэкранный режим с помощью стилей. См. ниже то же самое.
<style name="FullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowContentTransitions">true</item>
</style>
То же самое и с edittext. Activity запускается в полноэкранном режиме, но как только edittext получает фокус, нижняя панель навигации видна и остается на месте.
Мы будем признательны за любой вклад.
Ваше здоровье!