Android переключает полноэкранный режим в котлине

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

fun AppCompatActivity?.toggleFullscreen(fullscreen: Boolean) {
    if (this == null) return
    val attrs = window.attributes
    if (fullscreen) {
        attrs.flags = attrs.flags or  WindowManager.LayoutParams.FLAG_FULLSCREEN 
    } else {
        attrs.flags = attrs.flags and WindowManager.LayoutParams.FLAG_FULLSCREEN.inv()
    }
    window.attributes = attrs
}    

но это по-прежнему оставляет панель навигации внизу экрана, я попытался добавить некоторые другие флаги (поставив другой или после полноэкранного флага), предложенные https://developer.android.com/training/system-ui/immersive, в том числе:

SYSTEM_UI_FLAG_HIDE_NAVIGATION
SYSTEM_UI_FLAG_IMMERSIVE_STICKY

но, похоже, никто не работал, что-то мне не хватает?

2
0
2 078
1

Ответы 1

Вы можете вызвать переключение в полноэкранный режим, используя этот метод

fun toggleFullScreen() {
    if (window.decorView.systemUiVisibility == View.SYSTEM_UI_FLAG_VISIBLE) {
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
        window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_FULLSCREEN
    } else {
        window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
        window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE
    }
}

Для получения более подробной информации обратитесь к этой ссылке https://developer.android.com/training/system-ui/immersive, а для получения подробной информации о флагах обратитесь к этой ссылке https://developer.android.com/reference/android/view/View.html#SYSTEM_UI_FLAG_VISIBLE

Другие вопросы по теме