我的手机是红米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
);
大功告成
更新IQOO neo5全屏,其他一样,最后一段代码,需要多加两个标志
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);