2014-10-20 33 views
36

Trên Android 4.4 KitKat, bạn có thể đặt thanh Trạng thái và Điều hướng trong suốt với các thành phần chủ đề android:windowTranslucentStatusandroid:windowTranslucentNavigation và sau đó bên dưới thanh cửa sổ ứng dụng được mở rộng và thêm một gradient . Tuy nhiên trên Android 5.0 Lollipop này đã được thay đổi và bây giờ thay vì gradient một màu trong suốt được thêm vào. Android 5.0 cung cấp các thành phần android:statusBarColorandroid:navigationBarColor mới theo chủ đề Material mới, nhưng khi bạn cố gắng đặt các thành phần này thành @android:color/transparent cửa sổ ứng dụng không được mở rộng và nếu bạn sử dụng android:windowTranslucentStatusandroid:windowTranslucentNavigation thì android:statusBarColorandroid:navigationBarColor bị bỏ qua.Android 4.4 Trạng thái mờ và thanh điều hướng kiểu trên Android 5.0

Tôi có thiếu gì đó được mô tả trên http://developer.android.com/training/material/theme.html#StatusBar không?

enter image description here

Trả lời

63

Đặt android:windowTranslucentStatus-sai và thiết lập android:statusBarColor-@android:color/transparent.

Sau đó thêm mã bên dưới:

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

Nếu bạn cũng muốn thanh điều hướng là mờ, thiết android:navigationBarColor-@android:color/transparent và kết hợp cờ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION là tốt.

Tôi đã không thử nghiệm trên thanh điều hướng nhưng nó sẽ hoạt động.

+1

Tuyệt vời! Điều này làm việc cho cả hệ thống và thanh điều hướng. Tôi không hiểu tại sao điều này không được giải thích ở bất cứ đâu trên tài liệu chính thức. Cảm ơn. – AxeEffect

+1

Cảm ơn, nó hoạt động hoàn hảo! – Spotlight

+1

Tôi không chắc tại sao nhưng getWindow(). GetDecorView(). SetSystemUiVisibility ( Xem.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); làm cho nó thất bại trong mã của tôi. Tôi phải đảm bảo điều này là KHÔNG trong mã để làm cho nó hoạt động. – easycheese

7

Thêm bên dưới dòng để phong cách của bạn:

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

Để làm rõ @suckgamony's answer cho câu hỏi này:

  • Dưới Lollipop trở lên, thiết android:statusBarColor hoặc android:navigationBarColor-@android:color/transparent sẽ làm cho Thanh trạng thái hoặc Thanh điều hướng (tương ứng) hoàn toàn trong suốt, trừ khi:
  • android:windowTranslucentStatus hoặc android:windowTranslucentNavigation được thiết lập là true, trong trường hợp Status Bar hoặc Navigation Bar (tương ứng) được thiết lập để các màu trong suốt rắn @AxeEffect mô tả (một lần nữa, theo đó Lollipop và ở trên);
  • android:statusBarColorandroid:navigationBarColor chỉ có thể được sử dụng với phiên bản Android 21 (Lollipop 5.0) trở lên. Như được mô tả trong the referred to answer, android:windowTranslucentStatus hoặc android:windowTranslucentNavigation khi được sử dụng với Kitkat cung cấp gradient trong suốt chứ không phải là độ trong suốt đầy đủ.
Các vấn đề liên quan