2

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

在此处输入图像描述

4

1 回答 1

5

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

公共静态最终 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));
于 2015-05-25T05:18:09.993 回答