Android ICS隐藏系统栏

时间:2012-12-05 14:04:06

标签: android

我正在尝试隐藏/最小化Android 4.0.3中的系统栏。目前我正在做

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

在我活动的onCreate事件中。一旦用户触摸屏幕,该栏将再次出现。根据其他STO线程,这种行为无法避免。 我的想法是在我的视图上捕捉任何触摸事件,并在显示后立即重新隐藏该栏。在单击处理程序中运行上面显示的代码无效。 如何实现(几乎)隐藏的栏?

2 个答案:

答案 0 :(得分:1)

我不会谈论'为什么',只谈'怎么': - )

所以,关于

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

这不会影响使用系统栏而非单独导航的平板电脑设备 和状态栏。

在平板电脑上,您可以尝试(API Level 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 -   通常,您用来控制导航可见性的视图

答案 1 :(得分:0)

你不能隐藏它,但你可以简单地禁用它,除了家。试试this link.。使用SYSTEM_UI_FLAG_LOW_PROFILE可以调暗系统栏,使用onWindowFocusChanged()可以获得焦点并将其折叠。