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