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

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

1)xml布局中设置:
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    注意:4.4以前不支持沉浸式状态栏,而5.0之后的状态栏默认会有一层阴影
    处理方式:
    <item name="android:windowTranslucentStatus">false</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
2) 代码设置:
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            //对应xml设置
            //<item name="android:windowTranslucentStatus">false</item>
            //<item name="android:statusBarColor">@android:color/transparent</item>
            //<item name="android:windowTranslucentNavigation">true</item>
            getWindow().setStatusBarColor(0);
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        }else {
            //对应xml设置
            //<item name="android:windowTranslucentStatus">true</item>
            //<item name="android:windowTranslucentNavigation">true</item>
            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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。