protected boolean useThemestatusBarColor = true;//是否使用特殊的标题栏背景颜色,android5.0以上可以设置状态栏背景色,如果不使用则使用透明色值 protected boolean useStatusBarColor = false;//是否使用状态栏文字和图标为暗色,如果状态栏采用了白色系,则需要使状态栏和图标为暗色,android6.0以上可以设置 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setStatusBar(); } private void setStatusBar() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //5.0以上 View DecorView = getWindow().getDecorView(); int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //Activity全屏显示,且状态栏被覆盖掉 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; //SYSTEM_UI_FLAG_LAYOUT_STABLE DecorView.setSystemUiVisibility(option); if (useThemestatusBarColor) { getWindow().setStatusBarColor(getResources().getColor(R.color.white)); } else { getWindow().setStatusBarColor(Color.TRANSPARENT); } } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //44-5.0 WindowManager.LayoutParams layoutParams = getWindow().getAttributes(); layoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | layoutParams.flags); //状态栏透明 } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !useStatusBarColor) { //6.0以上设置对文字状态栏设置为黑色,因为之前5.0我们设置为白色。 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } }
上边是改变4.0到6.0的状态栏颜色。
改了之后可能会出现顶部导航栏被顶部导航栏盖住一部分的情况
activity在你的xml文件中设置
android:fitsSystemWindows="true"
fragment的话在文中,
@Override public void onHiddenChanged(boolean hidden) { if (view != null) { if (hidden) { view.setFitsSystemWindows(false); } else { view.setFitsSystemWindows(true); } view.requestApplyInsets(); } super.onHiddenChanged(hidden); }
OK了就。、。、、、、、、
第一个默认显示的fragment可能还会出现被盖住的情况,只要在ragment所在activity所在布局的xml中添加
android:fitsSystemWindows="true"就ok了、、、、