2013-12-14 31 views
21

Khi tôi phát hành ứng dụng ghi chú của mình cho Android 4.0 - 4.3 Tôi đã sử dụng màu thanh hành động tùy chỉnh với biểu tượng thanh tác vụ tùy chỉnh (thay vì sử dụng thanh hành động sáng và tối tiêu chuẩn). Tôi muốn làm cho nó như vậy trên Android 4.4, thanh trạng thái cũng sẽ đưa vào màu tùy chỉnh tôi đang sử dụng trong thanh hành động của tôi (đó là # FFD060). Có cách nào để dễ dàng thay đổi styles.xml hiện tại của tôi để cho phép 4.4 tận dụng điều này?Tận dụng thanh trạng thái mờ trong Android 4.4 KitKat

styles.xml My dưới thư mục giá trị-V19 của tôi là như sau:

<resources> 

<style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBarTheme</item> 
</style> 

<style name="MyActionBarTheme" parent="@android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">#ffd060</item> 
    <item name="android:textColor">#fff</item> 
    <item name="android:icon">@drawable/action</item> 
    <item name="android:titleTextStyle">@style/MyTextAppearance</item> 
</style> 

<style name="MyTextAppearance" parent="android:TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:icon">@drawable/action</item> 
    <item name="android:textColor">#ffffff</item> 
</style> 
</resources> 

Tôi đã cố gắng thực hiện:

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

Nó gây ra các nội dung của ứng dụng của tôi để di chuyển lên, bắt đầu trong khu vực thanh trạng thái và được bao phủ bởi Thanh tác vụ.

Without the translucent code

Trả lời

16

Cập nhật: Tìm thấy bài viết tuyệt vời này từ Matt Gaunt (Nhân viên của Google) khi thêm chủ đề Mờ vào ứng dụng Android. Nó rất kỹ lưỡng và giải quyết một số vấn đề mà nhiều người dường như gặp phải khi thực hiện phong cách này: Translucent Theme in Android

Chỉ thêm các tùy chọn sau vào kiểu tùy chỉnh của bạn. Điều này ngăn cản việc dịch chuyển nội dung đằng sau ActionBar và lên đến đỉnh của cửa sổ, mặc dù không chắc chắn về phía dưới màn hình.

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

Credit: Transparent Status Bar System UI on Kit-Kat

+0

Cũng lưu ý, công dân internet loại này từ Reddit có một lời giải thích tuyệt vời về cách đặt màu trong thanh trạng thái. Về cơ bản bạn bọc bố trí cơ sở của bạn trong một FrameLayout với màu nền mà bạn muốn. http://www.reddit.com/r/Android/comments/1ssgkt/any_android_apps_making_using_of_translucent/ce0y15d – thunsaker

+9

Đây là một chút nguy hiểm nếu bạn sử dụng Bánh mì nướng trong ứng dụng của mình, xem https://code.google.com/p/ android/issues/detail? id = 63653 – Paito

+0

Cảm ơn! Bài viết tuyệt vời –

2

Dường như tất cả các bạn cần làm là thêm yếu tố này để các chủ đề bạn muốn có một thanh trạng thái mờ trên:

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

Trước đây tôi đã thử điều này trong tệp Styles.xml của mình và tôi đã tự hỏi liệu có nhiều hơn một chút không. Khi tôi chỉ thêm điều này, nó làm cho nội dung của các ứng dụng của tôi di chuyển lên và bắt đầu trên thanh trạng thái và bị ẩn bởi thanh hành động. Đây là hình ảnh mẫu khi tôi triển khai: [Không có mã mờ] (http://i.imgur.com/3jvQQL4.png). [Với mã mờ] (http://i.imgur.com/XMgiO8h.png). – Amonstan

0

Bạn đang rất gần bạn chỉ cần cập nhật xem màu nền của bạn:

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ffd060" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/background_light" 

     <!-- your stuff here --> 
    </LinearLayout> 
</FrameLayout> 

Chỉ định màu nền toàn cầu trong AppBaseTheme của bạn cũng sẽ làm việc nhưng có khả năng sẽ gây ra một mớ hỗn độn vì nó sẽ là màu nền mặc định cho mọi thứ.

+2

Nhưng điều này không tạo ra quá nhiều bổ sung? –

2

Thêm những dòng này trong chủ đề chính của bạn

<style name="AppTheme" parent="android:Theme.Holo.Light"> 
    <item name="android:windowTranslucentStatus">true</item> 
    <item name="android:windowTranslucentNavigation">true</item> 
    <item name="android:fitsSystemWindows">true</item> 
</style> 
0

Để thay đổi màu sắc của thanh trạng thái để windowBackground

<item name="android:windowBackground">@color/window_bg</item> 

Để thêm hiệu ứng mờ để tình trạng và thanh điều hướng

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

<item name="android:windowTranslucentNavigation">true</item> 
Các vấn đề liên quan