/** * Android4.4以上的状态栏着色(针对于DrawerLayout) * 注: * 1.如果出现界面展示不正确,删除布局中所有fitsSystemWindows属性,尤其是DrawerLayout的fitsSystemWindows属性 * 2.可以版本判断在5.0以上不调用该方法,使用系统自带 * * @param activity Activity对象 * @param drawerLayout DrawerLayout对象 * @param statusBarColor 状态栏颜色 * @param alpha 透明栏透明度[0.0-1.0] */ public static void TintStatusBarForDrawer(Activity activity, DrawerLayout drawerLayout, int statusBarColor, float alpha) { if (Build.VERSION.SdkInt < BuildVersionCodes.Kitkat) { return; } Window window = activity.Window; //.getWindow(); ViewGroup decorView = (ViewGroup)window.DecorView; // (); ViewGroup drawContent = (ViewGroup)drawerLayout.GetChildAt(0); if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) { window.ClearFlags(WindowManagerFlags.TranslucentStatus); // WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); // WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.SetStatusBarColor(Color.Transparent); drawerLayout.SetStatusBarBackgroundColor(statusBarColor); int systemUiVisibility = (int)window.DecorView.SystemUiVisibility; // getDecorView().getSystemUiVisibility(); systemUiVisibility |= (int)SystemUiFlags.Fullscreen; // View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; systemUiVisibility |= (int)SystemUiFlags.LayoutStable; // View.SYSTEM_UI_FLAG_LAYOUT_STABLE; window.DecorView.SystemUiVisibility = (StatusBarVisibility)systemUiVisibility; // getDecorView().setSystemUiVisibility(systemUiVisibility); } else { window.AddFlags(WindowManagerFlags.TranslucentStatus);// WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } SetStatusBar(decorView, statusBarColor, true, true); SetTranslucentView(decorView, alpha); drawerLayout.SetFitsSystemWindows(false); drawContent.SetFitsSystemWindows(true); ViewGroup drawer = (ViewGroup)drawerLayout.GetChildAt(1); drawer.SetFitsSystemWindows(false); }