2015-12-03 87 views
1

在我的應用程序中,我試圖讓導航欄覆蓋活動內容。在肖像模式下,它工作正常。導航欄覆蓋內容。 當我將方向改爲橫向時,導航欄位於屏幕的右側。在這種橫向模式下,導航欄不會覆蓋我的內容。 我已經實現了打開和關閉全屏模式的功能。當我以橫向模式打開全屏時,由於不覆蓋導航欄,我的活動內容跳到左側。 以前,我的目標是SDK版本18,它運行良好。現在我的目標是sdk版本22,我有這個問題。Android - 橫向覆蓋的導航欄

在我onCreate,在那裏我有這些行:

用於啓用全屏模式
if (Build.VERSION.SDK_INT > 17) { 
    window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_OVERSCAN); 
} else { 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 

方法如下:

protected void fullscreenOn() { 
    if (mActivity != null && !mSearchModeOn) { 
     Window window = mActivity.getWindow(); 
     View decorView = window.getDecorView(); 
     if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { 
      decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View 
        .SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View 
        .SYSTEM_UI_FLAG_IMMERSIVE); 
     } else { 
      window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
      window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); 
      mActionBar.hide(); 
     } 
     mActionBar.hide(); 

     bottomBarsLayout.setVisibility(View.GONE); 
     mIsFullscreenOn = true; 

    } 
} 

這是奇怪的是,在縱向它工作正常,但在景觀沒有。有誰能夠幫助我?

UPDATE

注:在我的佈局,我已經設置fitsSystemWindow屬性true

更新2

我使用的是相同的佈局縱向和景觀。此外,我注意到這種奇怪的行爲只在Android 5(API 21)及更高版本的設備上。我用KitKat在設備上測試它,它工作正常。

+0

'fitsSystemWindow'如果確實如此:它會調整填充以爲系統窗口留出空間。縱向和橫向是否有兩種不同的佈局? – GPack

+0

@GPack請參閱我的第二個更新。 – PetrS

回答

1

我終於解決了這個問題。我在我的活動風格中添加了以下內容。

<item name="android:windowDrawsSystemBarBackgrounds" tools:ignore="NewApi">false</item>