4

我的活动中有两个片段,fA 和 fB。当我单击 fA 中的按钮时,fB 会替换 fA。fB 就像 google play 商店视图,当您打开查看某些应用程序时。图像位于透明状态栏下方。我通过将此代码添加到 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 替换,一切正常,但工具栏在状态栏下方。喜欢:

在此处输入图像描述

而它应该看起来像: 在此处输入图像描述

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

有什么办法可以清除我在 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);

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

4

1 回答 1

2

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

要显示状态栏:

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

要显示导航栏:

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
于 2020-03-14T11:49:17.163 回答