Я пытаюсь заставить свое приложение для 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
но, похоже, никто не работал, что-то мне не хватает?
Вы можете вызвать переключение в полноэкранный режим, используя этот метод
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