在setSystemuiVisibility

时间:2018-06-07 13:30:34

标签: android layout statusbar

场合
我的活动循环通过3个碎片。 2cnd是全屏,而其他人可以看到状态栏。我使用onResume

更改了我的2cnd片段的onPausesetSystemUiVisibility中状态栏的可见性
private static int HIDE_FLAGS = View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;

  @Override
public void onPause() {
    super.onPause();
    Activity activity = getActivity();
    activity.findViewById(R.id.container).setBackgroundColor(ActivityCompat.getColor(getContext(), R.color.white));
    activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}

@Override
public void onResume() {
    super.onResume();
    fragmentSwitched = false;
    Activity activity = getActivity();
    activity.findViewById(R.id.container).setBackgroundColor(ActivityCompat.getColor(getContext(), R.color.black));
    activity.getWindow().getDecorView().setSystemUiVisibility(HIDE_FLAGS);
}

问题
在我的第3个片段中,我正在更改其onViewCreated中的状态栏的颜色。

 getActivity().getWindow().setStatusBarColor(ContextCompat.getColor(getContext(), R.color.orange));

但即使代码被执行,颜色也不会改变,直到我再次离开片段。然后显示正确的颜色。如果我在我的2cnd片段中没有使用setSystemUiVisibility(HIDE_FLAGS),那么在进入第3片段后,颜色会立即改变。

问题
如何在状态栏再次可见后立即进行颜色更改?有没有办法强制重绘/ ui更新?

0 个答案:

没有答案