为了手动适配异形屏,让状态栏剩余区域更为美观,想优化下显示。
一开始先设置
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | SYSTEM_UI_FLAG_FULLSCREEN);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
getWindow().setAttributes(lp);
但是没有作用。
后来在布局文件中,
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
android:fitsSystemWindows="true"
tools:context=".FocusingActivity">
<......>
</androidx.constraintlayout.widget.ConstraintLayout>
发现android:fitsSystemWindows="true"
这句话很可疑
后遂删除,改之为android:fitsSystemWindows="false"
,过
这是其他文章里对这个属性的介绍:
fitsSystemWindows属性可以让view根据系统窗口来调整自己的布局;简单点说就是我们在设置应用布局时是否考虑系统窗口布局,这里系统窗口包括系统状态栏、导航栏、输入法等,包括一些手机系统带有的底部虚拟按键。
也就是说,设置android:fitsSystemWindows="true"
后,系统会给某些view自动加上padding,在状态栏下方的View则自动添加等同于状态栏高度的paddingTop,虚拟键上方的view自动添加等同于虚拟键高度的paddingBottom。既然我们要手动适配异形屏效果,自然就要关闭这一属性了。