2015-02-24 72 views
3

使用沉浸式模式的應用程序在等待一段時間後應用程序返回(活動已被銷燬)時,會在屏幕底部留下黑條。如何防止導航欄留下黑條? (沉浸式模式)

發生了什麼:(我已經啓用了開發者選項:「不要保留活動」來重現這一點)。

  1. 首次啓動應用程序。沉浸模式按預期工作。

  2. 向上滑動以顯示「沉浸式粘性」導航欄,並使用「主頁」按鈕離開應用程序。導航欄的背景在應用程序關閉前簡要顯示黑色背景。

  3. 使用「最近」按鈕,然後選擇要恢復的應用程序。

  4. 該應用程序打開後短暫顯示黑色欄上的導航欄。系統ui陷入沉浸式模式,但黑色條仍然存在。 systemuiblackbar

此錯誤也只出現在棒棒糖,不是奇巧。

我已經剝離迴應用程序簡單地設置從系統UI標誌推出無功能的虛擬活動分開:

public class DummyActivity extends FragmentActivity { 

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) { 
     setSystemUiVisibility(); 
    } 
} 

public void setSystemUiVisibility() { 
    if (getWindow() != null && getWindow().getDecorView() != null) { 
     getWindow().getDecorView().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_STICKY); 
     } 
    } 
} 

編輯: 僅與該活動創建一個新的新項目,我已經看到了這一點後,使用應用的主題延伸時的問題轉載「機器人:Theme.Holo」 ...,並固定在此示例項目的問題,當我延長材料主題,而不是:

變化

<style name="AppTheme" parent="android:Theme.Holo.Light.NoActionBar.Fullscreen"> 
</style> 

<style name="AppTheme"parent="android:Theme.Material.Light.NoActionBar.Fullscreen"> 
</style> 

遺憾的是此修復程序沒有解決問題,在我的主要項目,但它使我更接近解決方案,可以幫助其他有同樣問題。

+0

您是否嘗試過運行Hierarchy Viewer以確定該條是什麼? – robotoaster 2015-02-25 16:23:15

回答

1

我遇到了同樣的問題。以下是我做出的一些讓它消失的更新。希望這些爲你工作!

activity_main.xml中

android:fitsSystemWindows="false" 

風格-V21

<item name="android:windowTranslucentStatus">true</item> 
<item name="android:windowSharedElementsUseOverlay">false</item> 

MainActivity.java

getWindow().getDecorView().setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY 
        | View.SYSTEM_UI_FLAG_FULLSCREEN 
    ); 
+0

你的第一個建議只爲我工作。 – 2017-02-23 01:09:03

1

使用

<style name="AppTheme"parent="android:Theme.Material.Light.NoActionBar.Fullscreen"> </style> 

確實解決了這個問題,但它只適用於api:21。

爲了使它適用於所有系統。您可以在res目錄中創建一個名爲style-v21的目錄,並將該目錄放置在那裏。Android系統足夠聰明,可以選擇用於新手機還是舊手機。