2013-12-13 125 views
3

我正在使用新的Android 4.4 FLAG_TRANSLUCENT_NAVIGATION標誌將導航欄(背面,主頁按鈕等)在屏幕底部半透明。這工作正常,但這樣做的一個副作用是我的Activity的佈局現在顯示在屏幕頂部的狀態欄下方(即使我沒有將狀態欄設置爲半透明狀態)。我想避免一個hacky修復I.e.將填充應用到佈局的頂部。半透明導航沒有佈局顯示在狀態欄下

有沒有辦法將導航設置爲半透明狀態,同時確保狀態欄正常顯示並且不允許佈局顯示在其下方?

我使用的代碼如下:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
    Window w = getWindow(); 
    w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 
} 

感謝

回答

1

添加android:fitsSystemWindows="true"到您的頂級視圖 - android:fitsSystemWindows會自動調整角度考慮系統窗口,比如狀態酒吧。

+7

這不起作用。它確實可以防止視圖位於狀態欄下方,但也可以防止視圖出現在現在半透明的導航欄下 - 這實際上是無用的。 – Milo

5

ianhanniballake的答案確實有效,但不應該在頂級視圖上使用android:fitsSystemWindows="true"。使用此屬性如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@color/colorPrimaryDark"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:background="#ffffff" 
     android:fitsSystemWindows="true"> 

     <!-- Your other views --> 

    </LinearLayout> 
</LinearLayout> 

正如你所看到的,你必須設置頂級視圖的顏色,並將該屬性放在另一個容器。