Android:如何在方向更改时保留沉浸式模式?

问题描述 投票:2回答:2

目前在活动类中使用此代码块进入粘性沉浸式模式:

override fun onWindowFocusChanged(hasFocus:Boolean) {
        super.onWindowFocusChanged(hasFocus)

        if (hasFocus && android.os.Build.VERSION.SDK_INT > 15)
        {
            var flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                    View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
                    View.SYSTEM_UI_FLAG_FULLSCREEN
            flags = if (android.os.Build.VERSION.SDK_INT < 19) flags else                           
                flags or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            window.decorView.systemUiVisibility = flags
        }
    }

切换方向时,状态栏会返回(甚至不是半透明)并保持拖动状态,然后再次消失。我真的不明白这种行为的原因,我该如何解决?

先感谢您。

android kotlin screen-orientation android-immersive
2个回答
0
投票

我认为隐藏工具栏的唯一方法

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    getSupportActionBar()?.hide()
    onWindowFocusChanged(true)
}


override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)

    if (hasFocus && android.os.Build.VERSION.SDK_INT > 15) {
        var flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
                View.SYSTEM_UI_FLAG_FULLSCREEN
        flags = if (android.os.Build.VERSION.SDK_INT < 19) flags else
            flags or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        window.decorView.systemUiVisibility = flags
    }
}

0
投票

我刚试过这个,它看起来效果很好:

@Override
protected void onResume() {
    super.onResume();
    enableStickyImmersiveMode();
}

private void enableStickyImmersiveMode() {
    View decorView = getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN);
}
© www.soinside.com 2019 - 2024. All rights reserved.