Android.Как правильно скрыть строку состояния программно на устройстве с вырезом дисплея - PullRequest
0 голосов
/ 26 декабря 2018

В моем приложении есть ViewPager с 2 фрагментами.И когда вы проводите к одному из них, я хочу скрыть строку состояния.Вот этот код:

val hideFlag: Int =
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
            View.SYSTEM_UI_FLAG_FULLSCREEN or
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

activity?.window?.decorView?.systemUiVisibility = hideFlag

Все работало довольно хорошо на обычных устройствах, но есть несколько проблем на устройствах с вырезом дисплея.

1) Когда строка состояния показывает или скрывает весь пользовательский интерфейс,некоторые изменения в макете и переходы

2) Если строка состояния скрыта и вы проводите по экрану в верхней части экрана, ваше приложение просто вылетит без журналов и диалогов об ошибке.

Есть мысли?Спасибо

1 Ответ

0 голосов
/ 27 декабря 2018

Мне удалось решить проблему № 2.Вот код из Activity.onTochEvent:

public boolean onTouchEvent(MotionEvent event) {
    if (mWindow.shouldCloseOnTouch(this, event)) {
        finish();
        return true;
    }

    return false;
}

Таким образом, окно решает завершить текущее действие.Я не знаю, почему этот код вообще существует, но я переопределил этот метод в своей базовой деятельности, поэтому он всегда возвращает false, и все кажется нормальным.

Все еще есть проблемы с проблемой № 1.

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