我的活动中有两个片段,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替换,一切正常,但工具栏位于状态栏下。像:
然而,它应该看起来像:
这是首次加载片段时的样子。
有没有办法清除我在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);
还有其他方法可以解决这个问题吗? 谢谢!
答案 0 :(得分:2)
我想回答这个问题有点晚了。 在片段的onDestroy方法中编写以下代码行:
显示状态栏:
requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
显示导航栏:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);