【问题标题】:Get rid of Android L automatic opacity tint when using windowTranslucentStatus = true使用windowTranslucentStatus = true时摆脱Android L自动不透明色调
【发布时间】:2015-05-25 04:59:58
【问题描述】:

有谁知道当您使用 windowTranslucentStatus = true 时如何摆脱这种自动色调?我已经将状态栏颜色设置为透明,但是当我启用 windowTranslucentStatus 时,它似乎会覆盖它。如果我禁用 windowTranslucentStatus,那么我会获得所需的状态栏颜色,但我无法再在状态栏下绘制导航抽屉。我能够使用 ScrimInsetFrameLayout 实现我想要的,但这会导致其他问题。

【问题讨论】:

    标签: android android-5.0-lollipop android-4.4-kitkat android-statusbar


    【解决方案1】:

    如果启用FLAG_TRANSLUCENT_STATUS,您可以在状态栏下进行绘图,因为它会自动设置另外两个系统 UI 可见性标志,如documentation 中所述:

    public static final int FLAG_TRANSLUCENT_STATUS

    当为窗口启用此标志时,它会自动设置 系统 UI 可见性标志 SYSTEM_UI_FLAG_LAYOUT_STABLE 和 SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN。

    由于您只想使用setStatusBarColor,您需要手动设置这些标志:

    int flag = window.getDecorView().getSystemUiVisibility();
    window.getDecorView().setSystemUiVisibility( flag | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    window.setStatusBarColor(context.getResources().getColor(R.color.yourcolor));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-12
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2011-09-15
      • 1970-01-01
      相关资源
      最近更新 更多