场合
我的活动循环通过3个碎片。 2cnd是全屏,而其他人可以看到状态栏。我使用onResume
onPause
和setSystemUiVisibility
中状态栏的可见性
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更新?