你能在Fragment.onCreateView中检测应用程序是否处于沉浸式模式吗?

Mar*_*ark 7 android android-fragments android-4.4-kitkat

在片段中,我实现了一个,GestureDetector.SimpleOnGestureListener以便在onSingleTapUp检测到时可以进入/退出沉浸式模式.

A FragmentStatePagerAdapter用于在左/右滑动时在这些片段之间移动.如果您进入沉浸式模式,则滑动到新片段,UI将保持沉浸式模式.

但是,在onCreateView新片段的方法中,我需要在创建我的监听器时检测UI是否处于沉浸式模式.

我试过调用getSystemUiVisibility()新视图,但这会返回SYSTEM_UI_FLAG_VISIBLE.

有没有一种方法可以从任何视图或片段检测应用程序是否处于沉浸式模式,无论是否已启动过渡到沉浸式模式?

RyP*_*ope 5

如果有人正在寻找更深入的答案.要检查窗口是否处于沉浸式和非沉浸式,您可以使用以下方法:

(getWindow().getDecorView().getSystemUiVisibility() & View.SYSTEM_UI_FLAG_IMMERSIVE) == View.SYSTEM_UI_FLAG_IMMERSIVE
Run Code Online (Sandbox Code Playgroud)

它是沉浸式和普通式之间交换的一个例子:

private void toggleImmersive() {
    if ((getWindow().getDecorView().getSystemUiVisibility() & View.SYSTEM_UI_FLAG_IMMERSIVE) == View.SYSTEM_UI_FLAG_IMMERSIVE) {
        getWindow().getDecorView().setSystemUiVisibility( // Go fullscreen
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    } else {
        getWindow().getDecorView().setSystemUiVisibility( // Go immersive
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE);
    }
}
Run Code Online (Sandbox Code Playgroud)


Lar*_*fer 3

@Mark,听起来您可能已经根据我之前的评论解决了这个问题:使用 所View拥有的来Activity调用getSystemUiVisibility()而不是Fragment.