我的手机是红米Note 9 刘海屏,其他刘海屏不一定有用,但不妨试一试
其实非刘海屏的话,只需要在清单文件对应的activity下指定一个自定义的theme,theme的内容为以下内容即可
<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"><item name="android:windowFullscreen">true</item></style>
但对于刘海屏,光这样还不够,状态栏倒是隐藏了,但原本状态栏的部分会有一条黑条,页面布局不能在状态栏的位置生效。此时我们需要做一些额外的工作。
首先,我们用代码夺取状态栏位置的使用权
WindowManager.LayoutParams lp = this.getWindow().getAttributes();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;}getWindow().setAttributes(lp);
然后我们用代码将布局的位置延申到状态栏的位置
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
大功告成