繁体   English   中英

Android系统。 如何在具有显示切口的设备上以编程方式正确隐藏状态栏

[英]Android. How to correctly hide status bar programatically on device with display cutout

我的应用程序中有一个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;
}

因此窗口决定完成当前活动。 我不知道为什么这个代码甚至存在,但我在我的基本活动中覆盖了这个方法,所以它总是返回false,一切似乎都没问题。

但问题#1仍有问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM