沉浸式状态栏(/虚拟导航栏)

通过设置Theme主题设置状态栏透明

1)xml布局中设置:
    true
    true
    注意:4.4以前不支持沉浸式状态栏,而5.0之后的状态栏默认会有一层阴影
    处理方式:
    false
    @android:color/transparent
2) 代码设置:
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            //对应xml设置
            //false
            //@android:color/transparent
            //true
            getWindow().setStatusBarColor(0);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }else {
            //对应xml设置
            //true
            //true
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }
    }

保证内容不扩充到状态栏

1)通过设置布局文件根View属性:android:fitsSystemWindows="true"
    i)android:fitSystemWindow属性,只有在 sdk>=19,即系统版本大于等于4.4才会生效
    ii)只有在设置了StatusBar或者NavigationBar为透明时生效
    iii)fitSystemWindow设置为true时,View的padding设置会失效,自动添加一个值等于状态栏或虚拟导航栏高度的paddingTop,paddingBottom
2)在xml布局中添加占位状态栏View
3)在代码中添加占位状态栏View,并添加paddingTop

你可能感兴趣的:(沉浸式状态栏(/虚拟导航栏))