2017-01-09 73 views
0

我用SYSTEM_UI_FLAG_FULLSCREEN隐藏status bar,这样的代码(SDK> 16):隐藏状态栏不工作

Decorview decorview = getWindow().getDecorview(); 
decorview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); 

但是,它适用于一些Android手机,但无法在其他类似如下: wrong status bar hidden

白色satus吧有什么问题?为什么不隐藏? ps:风格很好,只是一个正常的,没有fitwindowsystem,没有身临其境。

+0

嗨,你有没有找到答案呢?我有同样的问题。 –

+0

@AI WId Nope。我放弃了使用这种方法,并使用如下方式:getWindow()。addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);有用。 –

+0

好的谢谢,我会做同样的我想 –

回答

0

由于在Android Docs提到的,你可以隐藏statusBar像这样的SDK < 16即Android版本比杰利贝恩低:在您的onCreate方法

if (Build.VERSION.SDK_INT < 16) { 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     } 

调用此,你叫setContentView之前。

和用于SDK以上16使用以下代码:

View decorView = getWindow().getDecorView(); 
// Hide the status bar. 
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; 
decorView.setSystemUiVisibility(uiOptions); 
// Remember that you should never show the action bar if the 
// status bar is hidden, so hide that too if necessary. 
ActionBar actionBar = getActionBar(); 
actionBar.hide(); 
+0

感谢您的回复!但是sdk在16以上,并没有操作栏。我只是做你的答案,但它在某些电话上失败。 –

0

1.如果Android版本比杰利贝恩较低,使用这个调用来隐藏。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (Build.VERSION.SDK_INT < 16) { 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 
    setContentView(R.layout.activity_main); 
} 

2.Code隐藏在16和更高的代码工作的状态栏。

Decorview decorview = getWindow().getDecorview(); 
decorview.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); 

注:请记住,你永远不应该显示操作栏,如果状态栏是隐藏的,所以隐藏太多,如果必要的。

ActionBar actionBar = getActionBar(); 
actionBar.hide(); 

3.如果在状态栏应该总是保持隐藏在你的应用程序设置在应用程序的清单文件中的一个活动主题。

<application 
    ... 
    android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen" > 
    ... 
</application> 
+0

感谢您的回复!但是sdk在16以上,并没有操作栏。我只是做你的答案,但它在某些电话上失败 –