2016-06-03 30 views
9

Khi tôi áp dụng các tính năng tự động tạo ra AppTheme.NoActionBar để hoạt động của tôi qua android:theme như vậy:Bar Status Android minh bạch khi sử dụng AppTheme.NoActionBar

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="mypackage"> 

    <application 
     ... 
     android:theme="@style/AppTheme"> 

     <activity 
      android:name=".MainActivity" 
      android:theme="@style/AppTheme.NoActionBar" /> 

    </application> 

</manifest> 

MainActivity My là kết xuất với thanh trạng thái trong suốt ở trên cùng, cuối cùng có nền trắng và văn bản màu trắng trên đó. Nếu thiết bị đang sạc, đó là biểu tượng duy nhất được nhìn thấy.

Transparent ActionBar

Transparent ActionBar từ AppTheme.NoActionBar

Đây là giá trị của tôi/styles.xml:

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 

    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
    </style> 

    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/> 

    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/> 

</resources> 

Trong phong cách thứ hai, bạn có thể thấy AppTheme.NoActionBar, mà theo mặc định kế thừa AppTheme, tuy nhiên không nơi nào trong cả hai kiểu chỉ định rằng thanh trạng thái phải trong suốt.

Trả lời

17

Rất có thể, nếu bạn đã gặp vấn đề này, bạn có một thư mục có tên giá trị-v21 và trong đó một tập tin gọi styles.xml. Tệp này xác định kiểu cho các thiết bị sử dụng API 21+ (Android 5.0+). Tệp này cũng rất có thể chứa kiểu sau có tên là AppTheme.NoActionBar. Nghe có vẻ quen?

giá trị-v21/styles.xml:

<resources> 
    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
     <item name="android:statusBarColor">@android:color/transparent</item> 
    </style> 
</resources> 

AppTheme.NoActionBar được định nghĩa trong giá trị/styles.xml cung cấp trong câu hỏi, mà vẫn còn hiệu lực, tuy nhiên tập tin đó chỉ được sử dụng cho thiết bị trong API 21. Nếu bạn nhìn vào mã, bạn có thể ngay lập tức xác định vấn đề chỉ bằng cách nhìn thấy từ trong suốt về phía cuối cùng. Một chút ở bên trái và chúng tôi thấy statusBarColor và thì đấy. Đó là vấn đề. Nếu bạn không cung cấp kiểu dáng này cho người dùng cập nhật hơn, bạn có thể chỉ cần xóa dòng đó tạo kiểu.

giá trị-v21/styles.xml:

<resources> 
    <style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
    </style> 
</resources> 

Và đây là kết quả của sự rằng việc loại bỏ phong cách:

Fixed result

Tốt ol' thanh trạng thái đục

Các vấn đề liên quan