2015-10-07 19 views
13

tôi đã xác định một phong cách cơ sở cho ứng dụng của tôi với các yếu tố sau:windowBackground trong Android 6 (Marshmallow)

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

nào đã thiết lập màu nền cho toàn bộ hoạt động của tôi tốt cho đến khi tôi đã thử nghiệm ứng dụng của tôi trên Android 6 nơi tất cả các nền đều có màu trắng. Các hình nền vẫn còn màu/window_background trên các thiết bị chạy pre-marshmallow.

Bất kỳ ai biết cách thực hiện công việc này (hoặc tại sao nó không hoạt động) trên Android 6?

Chỉnh sửa với một số thông tin khác: Tôi đang nhắm mục tiêu API 22, tôi chưa thay đổi gì từ phiên bản trước hoặc nâng cấp API, chỉ chạy trên Android 6 thay đổi nền.

+0

Bạn đang nhắm mục tiêu API 22 hoặc API 23? –

+0

Tôi có một vấn đề tương tự, một số hình nền cho tôi đã được làm đầy với màu cơ bản, tôi đã loại bỏ 'actionBarTheme' khỏi phong cách của tôi và có vẻ như để khắc phục các vấn đề nền. Tuy nhiên (cách bất ngờ) thanh tác vụ của tôi không được tạo kiểu đúng cách. –

+0

Cung cấp thêm chi tiết trong câu hỏi của bạn như chủ đề bạn đang sử dụng, nhắm mục tiêu API –

Trả lời

2

Tôi chưa tìm thấy bất kỳ điều gì cụ thể cho Marshmallow có thể gây ra điều này. Vì vậy, các đề xuất tôi có là:

Thay đổi tài nguyên màu nền thành tài nguyên hình dạng có thể vẽ được.

Từ:

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

Để:

<item name="android:windowBackground">@drawable/window_background</item> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="@color/window_background"/> 
</shape> 

Trong trường hợp bạn đã không kiểm tra độ mờ đục của tất cả các quan điểm của bạn:

Hãy chắc chắn rằng windowBackground của bạn thực sự là nền trong hầu hết các hoạt động của Hoạt động của bạn (đặc biệt là trên các phần có thể cuộn khi rút tiền là điều quan trọng nhất cần tránh), xóa hình nền mờ đục nếu có thể.

Make your windowBackground work for you instead of using null

Tôi nghĩ đây là thú vị, để xem được ưu tiên như thế nào lớp nền được thiết lập. Tôi không chắc chắn nếu bạn đang thiết lập bất kỳ nền xem hoặc làm thế nào bạn đã thiết lập ứng dụng của bạn, nhưng điều này là đáng đọc.

Backgrounds bao gồm nhiều lớp, từ sau ra trước:

  • đối tượng vẽ nền của theme
  • một màu (thiết lập thông qua setcolor (int))
  • hai Drawables, trước và hiện tại (được đặt thông qua setBitmap (Bitmap) hoặc setDrawable (Drawable)), có thể đang chuyển đổi

BackgroundManager

Tôi không thể tìm thấy nếu có sự khác biệt với các chủ đề trong Marshmallow, hoặc thứ tự của các phần tử, có vẻ như không có thay đổi cơ bản và tôi không tìm thấy lỗi.

Tôi hy vọng điều này sẽ giúp, cho tôi biết và tôi có thể có một giao diện khác.

Nếu điều này không giúp bạn đăng một số mã khác có liên quan đến vấn đề này. Chúc mừng.

+0

Tôi đoán tôi đang nói nó nên hoạt động và từ mã tôi có thể thấy tôi chỉ có thể đoán tại sao nó không hoạt động. –

+0

Tôi đang gặp vấn đề tương tự, nhưng giải pháp sử dụng tài nguyên hình dạng không hiệu quả đối với tôi. Vấn đề lớn nhất với lỗi này (hoặc bất cứ điều gì nó là) là nó cũng xảy ra trong ví dụ PreferenceFragment, mà không phải là dễ dàng để ghi đè lên như bố trí bình thường. –

+0

@MatousHybl Tôi thấy câu trả lời của bạn, nó có vẻ tốt và phù hợp với những gì tôi đã nói, rằng một nơi nào đó nền đã được thiết lập trên một cái nhìn và đó là ghi đè phong cách tùy chỉnh. Ngoài ra, thật khó để gỡ lỗi mã của ai đó khi bạn không thể thấy hầu hết mã. –

1

Tôi đã từng có cùng một vấn đề, nhưng tôi phát hiện ra bằng cách thử rằng nếu tôi nhận xét actionBarTheme theo phong cách của tôi, nó bắt đầu hoạt động đột ngột. Tôi đào sâu hơn về phong cách của mình và phát hiện ra rằng phong cách của thanh tác vụ đã được thiết lập thuộc tính android:background sau khi nhận xét nó ra mọi thứ hoạt động ngay bây giờ như mong đợi.

+0

đã nhận xét tất cả trường hợp của android: background, không thay đổi. – Heinrisch

0

Nếu bạn đang sử dụng Android Studio 1.4 trở lên, hãy chuyển đến kiểu của chủ đề của bạn và nhấp vào "Mở trình chỉnh sửa" ở góc trên bên phải. Sau đó thay đổi nền cửa sổ của bạn ở đó. Nó phải là dưới "android: colorBackground"

+0

Đã thử cách này, nó đã thêm cửa sổTrở lại ở một vài nơi nhưng nó không thay đổi nền. – Heinrisch

0

Làm thế nào về việc thiết cả windowBackgroundcolorBackground

<item name="android:windowBackground">@color/window_background</item> 
<item name="android:colorBackground">@color/window_background</item> 
Các vấn đề liên quan