kotlin中的Android全屏切换

kotlin中的Android全屏切换,android,kotlin,Android,Kotlin,我正在尝试让我的android应用程序在全屏和非全屏模式之间切换。基于其他堆栈溢出的答案,我做了这个扩展来完成我需要的大部分工作 fun AppCompatActivity?.toggleFullscreen(fullscreen: Boolean) { if (this == null) return val attrs = window.attributes if (fullscreen) { attrs.flags = attrs.flags or

我正在尝试让我的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
}    
但这仍然将导航栏保留在屏幕底部,我尝试添加一些其他标志(通过将另一个或置于全屏标志之后),建议包括:

SYSTEM_UI_FLAG_HIDE_NAVIGATION
SYSTEM_UI_FLAG_IMMERSIVE_STICKY

但似乎都不起作用,我缺少什么吗?

您可以使用此方法调用toggle fullscreen

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
    }
}
有关更多详细信息,请参阅此链接;有关标志的详细信息,请参阅此链接