Android:全屏系统可见性搞砸了窗口插图

Dap*_*app 5 user-interface android android-fragments

我正在编写一个应用程序,它有一个活动和一堆片段,其中一个片段是全屏的。为了实现这一点,我正在尝试使用系统 UI 可见性标志。

对于全屏片段,我设置了可见性:

layout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)

一旦我这样做,窗口插图就会更改为似乎没有任何意义的值。然后,当我退出那个全屏片段时,我的视图中出现了错误的填充(基于奇怪的插图)

在此处输入图片说明

有谁知道这里发生了什么?我理解窗口插图的方式一定是错误的,因为这种行为似乎完全违反直觉。任何见解将不胜感激。

要查看我为说明问题而编写的测试应用程序的完整源代码,请访问此处:

https://github.com/dapp/visibilitytest

ian*_*ake 0

setSystemUiVisibility()传播系统 UI 可见性更改视图层次结构(以请求新的插图)。

但是,当您调用layout.setSystemUiVisibility()Fragment时onCreateView()layout尚未附加到视图层次结构。这就是导致您的插图未正确更新的问题的原因。

您可以改为调用getActivity().getWindow().getDecorView().setSystemUiVisibility()onCreateView()您会发现所有插图都正常工作。