2014-10-20 47 views
0

我有一個包含切換全屏功能的應用程序。
使用以下代碼切換全屏效果確實成功。
狀態欄隱藏在全屏下,但在Android中按下菜單鍵時顯示狀態欄

if (tofull) { 

     if (Build.VERSION.SDK_INT < 16) { 
      Log.i("toggleFullScreen", "API<16"); 
      getWindow().setFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     } else { 
      Log.i("toggleFullScreen", "API>=16"); 
      View decorView = getWindow().getDecorView(); 
      // Hide the status bar. 
      // int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; 
      int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; 
      decorView.setSystemUiVisibility(uiOptions); 
     } 

    } else { 
     if (Build.VERSION.SDK_INT < 16) { 
      Log.i("toggleFullScreen", "API<16"); 
      getWindow().clearFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     } else { 
      Log.i("toggleFullScreen", "API>=16"); 
      View decorView = getWindow().getDecorView(); 
      // Hide the status bar. 
      int uiOptions = View.SYSTEM_UI_FLAG_VISIBLE; 
      decorView.setSystemUiVisibility(uiOptions); 
     } 
    } 

它可以隱藏狀態欄後切換到全屏模式。

然而,當我按下硬件菜單鍵按鈕(我有一個選項菜單,將按下菜單鍵後顯示出來),該狀態欄出來。而狀態欄不會再隱藏

這個問題存在的可能原因是什麼?
任何人都可以解決它(使狀態欄自動再次隱藏)?

回答

0

請重寫此方法,對所以這個方法你能避免菜單顯示您的活動

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 

    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     Log.d(TAG,"did pressed menu button"); 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

,當你的應用程序是全屏模式。