hel*_*rld 5 android android-fragments android-view android-fullscreen android-statusbar
我的活动中有两个片段,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);
Run Code Online (Sandbox Code Playgroud)
当我按返回时,fB被删除并被fA取代,一切正常,但工具栏位于状态栏下方。喜欢:

然而,它应该看起来像:

这就是片段首次加载时的样子。
有什么办法可以清除我在 fB 中设置的标志吗?我尝试将此代码放入片段的 onResume 中,但没有成功!
w.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|View.SYSTEM_UI_FLAG_VISIBLE);
Run Code Online (Sandbox Code Playgroud)
而且,我也尝试过:
w.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
w.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
还有其他方法可以解决这个问题吗?谢谢你!
我想现在回答这个问题有点晚了。在片段的 onDestroy 方法中写入以下代码行:
显示状态栏:
requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
Run Code Online (Sandbox Code Playgroud)
显示导航栏:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
Run Code Online (Sandbox Code Playgroud)