当我打开一个微调器时,沉浸式全屏模式(粘滞标志)被禁用

时间:2015-01-22 17:58:41

标签: android android-layout android-ui android-notification-bar

我正在使用带有Sticky flag模态的Inmersive全屏模式,这四种模式中的第四种解释如下: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"

它工作正常,但我的应用程序中有一个Spinner,当我触摸微调器时,沉浸式模式禁用! :S

如何解决这个问题?

由于

1 个答案:

答案 0 :(得分: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