Скрытая панель навигации (нижняя панель с кнопками «Домой», «Назад» и «Обзор») отображается после отображения диалогового окна или в том случае, если EditText получает фокус - PullRequest
0 голосов
/ 15 декабря 2018

Существует полноэкранное действие со следующими кодовыми блоками, используемыми для достижения того же:

@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.Активность начинается в полноэкранном режиме, но как только текст редактирования получает фокус, нижняя панель навигации становится видимой и застревает.

Любой ввод приветствуется.

Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...