【问题标题】: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));