使用windowTranslucentStatus = true时,摆脱Android L自动不透明色调

时间:2015-05-25 04:59:58

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

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

enter image description here

1 个答案:

答案 0 :(得分:5)

如果启用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));