我不会谈论“为什么”,只谈论“如何”:-)
那么,关于
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
这不会影响使用系统栏而不是单独的导航和状态栏的平板电脑设备。
在平板电脑上,您可以尝试(API 级别 14 起)
myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
要检测事件,我认为您可以使用它来捕获事件:
myView.setOnSystemUiVisibilityChangeListener(
new OnSystemUiVisibilityChangeListener()
{
public void onSystemUiVisibilityChange(int visibility)
{
if (visibility == View.SYSTEM_UI_FLAG_VISIBLE) {
// TODO whatever you want
}
else {
// TODO what to do in the other case
}
}
}
);
更一般地说,这是来自“专业 Android 4 应用程序开发”的附加建议
将 UI 中的其他更改与导航可见性的更改同步通常是一种很好的做法。例如,您可以根据进入和退出“全屏模式”选择隐藏和显示操作栏和其他导航控件。您可以通过将 OnSystemUiVisibilityChangeListener 注册到您的视图来做到这一点 - 通常,您用于控制导航可见性的视图
.