如何撤消对窗口装饰视图的更改?

时间:2015-07-16 19:02:02

标签: android android-fragments android-view android-fullscreen android-statusbar

我的活动中有两个片段,fA和fB。当我单击fA中的按钮时,fB将替换fA。当你打开查看某个应用程序时,fB就像谷歌游戏商店视图一样。图像位于透明状态栏下。我通过将此代码添加到fB#onCreateView:

来完成此操作
    Window w = getActivity().getWindow();
    w.getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    w.setStatusBarColor(Color.TRANSPARENT);

当我按下时,fB被移除并被fA替换,一切正常,但工具栏位于状态栏下。像:

enter image description here

然而,它应该看起来像: enter image description here

这是首次加载片段时的样子。

有没有办法清除我在fB中设置的标志?我已经尝试将此代码放在片段的onResume中,但没有运气!

    w.getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    |View.SYSTEM_UI_FLAG_VISIBLE);

并且,我也尝试过:

    w.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    w.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

还有其他方法可以解决这个问题吗? 谢谢!

1 个答案:

答案 0 :(得分:2)

我想回答这个问题有点晚了。 在片段的onDestroy方法中编写以下代码行:

显示状态栏:

requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)

显示导航栏:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);