2012-12-05 75 views
0

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

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

在我的活动onCreate事件。只要用户触摸屏幕,酒吧会再次出现。根据其他STO线程,这种行为不能被规避。 我的想法是赶上我认为任何触摸事件,并重新将其隐藏显示后立即酒吧。在点击处理程序中运行上面显示的代码不起作用。 如何实现(几乎)隐藏吧?

回答

1

我不会谈论“为什么”,只是“如何” :-)

所以,关于

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应用程序开发”的额外建议

通常会同步其他更改在您的 用户界面中,导航可见性发生变化。例如,您可以选择 来隐藏和显示基于进入和退出“全屏模式”的操作栏和其他导航控件 。您可以通过 将OnSystemUiVisibilityChangeListener注册到您的View - 一般来说,View是使用控制导航知名度

+0

它会影响平板设备。系统栏隐藏,直到第一次触摸发生。 – gorootde

0

你不能隐藏它,但你可以简单地禁用它,除了回家。尝试this link.。使用SYSTEM_UI_FLAG_LOW_PROFILE,您可以调暗系统栏,并使用onWindowFocusChanged()可以关注并折叠它。