7.0以上版本沉浸式状态栏解决

在Android7.0以上版本的手机中,发现沉浸式状态栏不好使了,用以前的写法,状态栏会有一层黑色的半透明遮罩

具体现象

7.0以上版本沉浸式状态栏解决_第1张图片

7.0以上版本沉浸式状态栏解决_第2张图片

原因

在7.0以上,状态栏颜色是由系统动态运算得出的,因此我们给它设置透明色也是没用的。

解决办法

加入判断逻辑,通过getWindow().getDecorView()可以获取到这个DecorView类的对象,然后通过反射修改这个对象的成员mSemiTransparentStatusBarColor变量值,这个变量值就是运算得出的状态栏颜色。
具体代码如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            try {
                Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");
                Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");
                field.setAccessible(true);
                field.setInt(getWindow().getDecorView(), Color.TRANSPARENT);  //改为透明
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

你可能感兴趣的:(Android)