当我打开下拉框时,沉浸式全屏模式(粘性标志)被禁用。

3
我正在使用带有Sticky flag模态的沉浸式全屏模式,这是在此处解释的四种模态中的第四种:https://developer.android.com/training/system-ui/immersive.html 我正在执行以下操作:
    if( Build.VERSION.SDK_INT >= 19 ){      
        //si es mayor o igual a API 19 kitkat ocultamos las barras UI del sistema
        mainBody.setSystemUiVisibility(
                256 //SYSTEM_UI_FLAG_LAYOUT_STABLE
                | 512 //SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | 1024 //SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                | 2 //SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                | 4 //SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                | 4096 //SYSTEM_UI_FLAG_IMMERSIVE_STICKY
        );
    }

在我的清单文件中,我在应用程序级别上有以下配置:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

应用程序正常运行,但是当我触碰下拉菜单时,沉浸式模式会自动关闭! :S

如何解决这个问题?

谢谢。


最后,@Quinn 在类似的问题的答案中粘贴了解决方案的链接:https://dev59.com/-Krka4cB1Zd3GeqPZiym#60462764 - Panicum
1个回答

1
同样的问题在这里。也可以参考https://code.google.com/p/android/issues/detail?id=68031 我最接近解决它的方法是(在你的Activity中)添加全屏标志,并在关闭下拉菜单后重新设置全屏标志,当活动重新获得焦点时。
private void goFullScreen()
{
  // Only navigation will be shown when opening a spinner
  getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

  getWindow().getDecorView().setSystemUiVisibility(yourFlags);
}


@Override
protected void onResume()
{
  super.onResume();
  goFullScreen();
}


@Override
public void onWindowFocusChanged(boolean hasFocus)
{
  // Go full screen again when a spinner is closed
  if (hasFocus) {
    goFullScreen();
  }
}

是的,这是一个解决方法。我会考虑扩展 Spinner


你在这方面有进展吗?我已经成功让沉浸模式恢复了,但是当加载图标显示时导航栏也会出现。 - Leon
不好意思,我不能再花更多时间在这上面了。对我们的应用程序来说这不是一个主要需求,所以我们放弃了它。 - Jasper de Vries
1
我找到了一个稍微更好的解决方法,基于这个。通过在我的下拉列表绑定的OnTouchListener中调用setSystemUiVisibility。这样你就不会看到系统UI弹出来了。 - Nathan
1
@Nathan,你能添加代码吗?我尝试了一下,但它不起作用:当我在onTouch方法中返回false时,没有任何区别,当我返回true时,下拉菜单停止工作。 - mrek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接