我目前正在为 Nexus 7 平板电脑编写具有完全全屏体验的 Android 应用(系统栏和导航栏只有在用户向下滑动时才会显示)。
出于某种原因,当我切换 Activity 时,导航栏会短暂地重新出现。
为了创建全屏效果,我在每个 Activity 的 onResume()
中将系统 UI 可见性设置为预定选项,注册一个 UI 更改监听器,并注册一个窗口焦点监听器。
用户界面选项
private View decorView = getWindow().getDecorView();
private int uiOptions = 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_STICKY;
在 onResume() 中设置系统 UI 可见性
@Override
protected void onResume() {
super.onResume();
decorView.setSystemUiVisibility(uiOptions);
}
在 UI 更改时设置系统 UI 可见性
decorView.setOnSystemUiVisibilityChangeListener (
new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int pVisibility) {
if ((pVisibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
decorView.setSystemUiVisibility(uiOptions);
}
}
});
在窗口获得焦点时设置系统 UI 可见性
@Override
public void onWindowFocusChanged(boolean pHasFocus) {
super.onWindowFocusChanged(pHasFocus);
if(pHasFocus) {
decorView.setSystemUiVisibility(uiOptions);
}
}
以上所有事情都在应用程序的每个 Activity 中完成,以确保 当键盘消失, Activity 恢复时,导航栏和状态栏被隐藏, 等等
但是,我仍然遇到切换时导航栏短暂出现的问题 Activity 。
非常感谢任何帮助!谢谢。
最佳答案
您需要使用应用程序和 Activity 样式的主题,如下所述:android:theme="@android:style/Theme.NoTitleBar.Fullscreen" works on Application level but not at the activity level. Any clue? .这些是在创建 View 时应用的,而不是像您一样在 onResume 中创建后删除它们。
基本上,您需要为没有标题栏/操作栏的应用程序设置一个主题(如果您已经有一个主题,让它扩展这个主题):
<application
...
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
</application>
同样适用于每个 Activity :
<activity
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
...
</activity>
在 Activity 的 onCreate 中:
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
关于java - 切换 Activity 时导航栏短暂出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25901135/