通过设置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