我的应用程序中有一个viewPager,有2个片段。当您滑动到其中一个时,我想隐藏状态栏。这是这段代码:

val hideFlag: Int =
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
            View.SYSTEM_UI_FLAG_FULLSCREEN or
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

activity?.window?.decorView?.systemUiVisibility = hideFlag

一切在普通设备上都运行良好,但是在带有显示切口的设备上存在一些问题。

1)当状态栏显示或隐藏整个UI时,会进行一些重新布局并跳转

2)如果状态栏处于隐藏状态,并且从屏幕顶部进行滑动,则应用程序将崩溃,没有日志,也没有关于错误的对话框。

有什么想法吗?谢谢

最佳答案

我已经设法解决了问题2。这是来自Activity.onTochEvent的代码:

public boolean onTouchEvent(MotionEvent event) {
    if (mWindow.shouldCloseOnTouch(this, event)) {
        finish();
        return true;
    }

    return false;
}

因此,窗口决定完成当前 Activity 。我不知道为什么此代码甚至存在,但是我在基本 Activity 中重写了此方法,因此它始终返回false,一切似乎都很好。

仍然有问题#1的问题。

10-02 00:48
查看更多