Exemple #1
1
  /**
   * 为 DrawerLayout 布局设置状态栏透明
   *
   * @param activity 需要设置的activity
   * @param drawerLayout DrawerLayout
   */
  public static void setTransparentForDrawerLayout(Activity activity, DrawerLayout drawerLayout) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
      return;
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
      activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
      activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
      activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
    } else {
      activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }

    ViewGroup contentLayout = (ViewGroup) drawerLayout.getChildAt(0);
    // 内容布局不是 LinearLayout 时,设置padding top
    if (!(contentLayout instanceof LinearLayout) && contentLayout.getChildAt(1) != null) {
      contentLayout.getChildAt(1).setPadding(0, getStatusBarHeight(activity), 0, 0);
    }

    // 设置属性
    ViewGroup drawer = (ViewGroup) drawerLayout.getChildAt(1);
    drawerLayout.setFitsSystemWindows(false);
    contentLayout.setFitsSystemWindows(false);
    contentLayout.setClipToPadding(true);
    drawer.setFitsSystemWindows(false);
  }
Exemple #2
0
 /**
  * 为 DrawerLayout 布局设置状态栏透明(5.0以上半透明效果,不建议使用)
  *
  * @param activity 需要设置的activity
  * @param drawerLayout DrawerLayout
  */
 public static void setTranslucentForDrawerLayoutDiff(
     Activity activity, DrawerLayout drawerLayout) {
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
     // 设置状态栏透明
     activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
     // 设置内容布局属性
     ViewGroup contentLayout = (ViewGroup) drawerLayout.getChildAt(0);
     contentLayout.setFitsSystemWindows(true);
     contentLayout.setClipToPadding(true);
     // 设置抽屉布局属性
     ViewGroup vg = (ViewGroup) drawerLayout.getChildAt(1);
     vg.setFitsSystemWindows(false);
     // 设置 DrawerLayout 属性
     drawerLayout.setFitsSystemWindows(false);
   }
 }
Exemple #3
0
 /**
  * 为DrawerLayout 布局设置状态栏变色(5.0以下无半透明效果,不建议使用)
  *
  * @param activity 需要设置的activity
  * @param drawerLayout DrawerLayout
  * @param color 状态栏颜色值
  */
 public static void setColorForDrawerLayoutDiff(
     Activity activity, DrawerLayout drawerLayout, int color) {
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
     activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
     // 生成一个状态栏大小的矩形
     View statusBarView = createStatusBarView(activity, color);
     // 添加 statusBarView 到布局中
     ViewGroup contentLayout = (ViewGroup) drawerLayout.getChildAt(0);
     contentLayout.addView(statusBarView, 0);
     // 内容布局不是 LinearLayout 时,设置padding top
     if (!(contentLayout instanceof LinearLayout) && contentLayout.getChildAt(1) != null) {
       contentLayout.getChildAt(1).setPadding(0, getStatusBarHeight(activity), 0, 0);
     }
     // 设置属性
     ViewGroup drawer = (ViewGroup) drawerLayout.getChildAt(1);
     drawerLayout.setFitsSystemWindows(false);
     contentLayout.setFitsSystemWindows(false);
     contentLayout.setClipToPadding(true);
     drawer.setFitsSystemWindows(false);
   }
 }