我的应用程序中有一个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的问题。