我正在使用带有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
如何解决这个问题?
由于
答案 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
。