2015-10-26 54 views
4

我正在研究狀態欄完全透明而不是半透明以及導航欄未被觸摸的方式。Android在狀態欄後面繪製,但不在導航欄後面

最近我可以是使用標誌

WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

,但由此得出導航欄後面爲好。

背景是什麼讓這個棘手,它是一個微妙的漸變,並且當我將狀態欄顏色設置爲漸變的開始時,它看起來幾乎是正確的,但在屏幕頂部有一條細微的線。

是否有一種很好的方法可以將活動適合窗口,只在頂部,但如果底部有一個導航欄,請保持獨立?

回答

10

一個很好的方法是從this answer方法一。

要實現完全透明的狀態欄,你必須使用 statusBarColor,這是隻有在API 21及更高版本。 windowTranslucentStatus在API 19及更高版本中可用,但它爲狀態欄添加了有色背景。但是,設置 windowTranslucentStatus確實做到一兩件事,改變statusBarColor透明不:它集SYSTEM_UI_FLAG_LAYOUT_STABLE和SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 標誌。獲得相同效果的最簡單方法是手動設置這些標記,這樣可以有效地禁用Android 版圖系統施加的插頁,並讓您自己保護。

你叫這條線在你onCreate方法:

getWindow().getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

一定要還設置了透明/res/values-v21/styles.xml:

<item name="android:statusBarColor">@android:color/transparent</item> 

或者設置透明度以編程方式:

getWindow().setStatusBarColor(Color.TRANSPARENT); 

這種方法的好處是,相同的佈局和設計通過交換透明狀態欄 以獲得有色半透明狀態欄,還可以在API 19上使用。

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

我猜你已經試過這或類似的東西。如果這不起作用,請確保您的根元素是FrameLayout

+1

默認爲 android.support.design.widget.CoordinatorLayout 而不是幀佈局。這沒關係,謝謝 –