androi6.0沉浸式状态栏实现
1.直接在baseactivity中加入如下代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(0xfffafafa);
// window.setNavigationBarColor(Color.TRANSPARENT);
}
还有就是在布局文件中添加 android:fitsSystemWindows=”true”属性
2.需要注意的问题:
在设置状态栏为白色等亮色时,需要设置View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR才能将图标变成黑色(不设置时为白色)
3,其他版本可参考:参考一 参考2
附加:android5.0以上实现 全屏背景且显示状态栏和导航栏
1,首先activity中的oncreate中加入如下代码:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
}
2,在对应的布局文件的根布局上加
android:fitsSystemWindows="true"
android:background="@drawable/bg"//背景图片