Активность "прыгает", когда установлен View.SYSTEM_UI_FLAG_FULLSCREEN - PullRequest
0 голосов
/ 24 октября 2019

У меня есть Activity для просмотра изображений. Когда я пытаюсь перевести его в полноэкранный режим, используя флаг View.SYSTEM_UI_FLAG_FULLSCREEN в корневом представлении, он не просто скрывает строку состояния, он скачет и не позволяет использовать пространство за statusbar.

* 1005. * Вот короткое видео моей проблемы: https://i.imgur.com/kKnsWL0.mp4

В onCreate моего Activity:

containerView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

Моя функция переключения полноэкранного режима:

private fun toggleFullscreen() {
    if (Build.VERSION.SDK_INT >= 21) {
        val fullscreenFlag = View.SYSTEM_UI_FLAG_FULLSCREEN
        if (isFullscreen) {
            containerView.systemUiVisibility = containerView.systemUiVisibility and fullscreenFlag.inv()
        } else {
            containerView.systemUiVisibility = containerView.systemUiVisibility or fullscreenFlag
        }
    }

    if (isFullscreen) {
        toolbar.visible
    } else {
        toolbar.invisible
    }

    isFullscreen = !isFullscreen
}

РЕДАКТИРОВАТЬ: похоже, что проблема вокруг выреза, потому что я вижу эти скачки только на моем Google Pixel 3 XL. В Meizu PRO6 нет ничего плохого.

1 Ответ

1 голос
/ 24 октября 2019

Я нашел решение - причина в "надрезанном" устройстве. Если вы столкнулись с той же проблемой, просто вставьте этот код в свою активность:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
        window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...