2011-12-16 57 views
7

Tôi có một hoạt động danh sách điền khi tôi nhấp vào một tab, vấn đề là danh sách màu chuyển sang màu đen khi cuộn, mặc dù tôi chưa đặt bất kỳ thuộc tính nào xảy ra như vậy .. để tránh vấn đề này? Cảm ơn,Danh sách màu chuyển sang màu đen khi cuộn

+1

Tôi nghĩ u phải kiểm tra liên kết này [http://stackoverflow.com/questions/2833057/background- listview-trở-đen-khi-scrolling] [1] [1]: http://stackoverflow.com/questions/2833057/background-listview-becomes-black-when-scrolling – androidGuy

Trả lời

21

Thêm phần này vào listView trong file xml:

android:cacheColorHint="#00000000" 

hoặc trong mã Java:

getListView().setCacheColorHint(0); 
0

Phải chăng ông đã thiết lập một chủ đề về hoạt động hoặc ứng dụng của bạn có sử dụng các

Đây là mẹo giúp tăng tốc độ vẽ 2D một chút khi bạn ave một cái nhìn (thường là surfaceView) lấp đầy cha mẹ. Tôi đã thấy điều này gây ra dựng hình nền lẻ của listViews và scrollViews.

Nếu bạn đang sử dụng hack cửa sổ trống, bạn có thể thử đặt màu nền cho chế độ xem danh sách của mình và tôi đặt cược các vấn đề cuộn sẽ bị giảm.

7

Tôi khuyên bạn nên xem qua bài viết này: ListView Backgrounds: An Optimization, đây là bài viết phải đọc trước khi tùy chỉnh giao diện của LitsView.

Trích từ tài liệu trên:

Như đã đề cập trước đó, ListView có/nền mờ trong suốt theo mặc định, và vì vậy tất cả các widget mặc định trong bộ công cụ Android UI. Điều này ngụ ý rằng khi ListView vẽ lại con của nó, nó phải pha trộn các trẻ em với nền của cửa sổ. Một lần nữa, điều này đòi hỏi phải đọc lại chi phí từ bộ nhớ đặc biệt đau đớn trong khi cuộn hoặc trượt khi bản vẽ xảy ra hàng chục lần mỗi giây.

Để cải thiện hiệu suất bản vẽ trong khi di chuyển hoạt động, khung công tác Android sẽ sử dụng lại gợi ý màu bộ nhớ cache. Khi gợi ý này được thiết lập, khuôn khổ sẽ sao chép từng con của danh sách trong một Bitmap chứa đầy giá trị gợi ý (giả sử rằng một tối ưu hóa khác, được gọi là bộ nhớ đệm cuộn, không bị tắt). ListView sau đó blits các bitmap trực tiếp trên màn hình và bởi vì các bitmap được biết là mờ đục, không cần pha trộn. Ngoài ra, vì gợi ý màu bộ nhớ cache mặc định là # 191919, bạn sẽ có một nền tối phía sau mỗi mục trong khi cuộn.

Để khắc phục sự cố này, tất cả những gì bạn phải làm là vô hiệu hóa tối ưu hóa gợi ý màu bộ nhớ cache, nếu bạn sử dụng nền màu không đồng nhất hoặc đặt gợi ý cho giá trị màu đồng nhất. Bạn có thể làm điều này từ mã (xem setCacheColorHint(int)) hoặc tốt hơn là từ XML, bằng cách sử dụng thuộc tính android: cacheColorHint. Để tắt tối ưu hóa, chỉ cần sử dụng màu trong suốt #00000000.Ảnh chụp màn hình dưới đây cho thấy một danh sách với android:cacheColorHint="#00000000" bộ trong file layout XML

+0

liên kết ở trên hiện là 404. Bạn có thể ee bài đăng blog gốc của Romain Guy tại đây: http://www.curious-creature.org/2008/12/22/why-is-my-list-black-an-android-optimization/ – bkurzius

+0

@bkurzius yes nó bị hỏng , Tôi đoán nó xảy ra do trang web android được thiết kế lại. Và đây là một bài viết gốc trên trang developers.android.com: http://android-developers.blogspot.in/2009/01/why-is-my-list-black-android.html –

0

Tôi biết nó muộn để trả lời câu hỏi này nhưng đối với những người đang phải đối mặt vấn đề này:

kỹ thuật trên có thể làm việc nhưng có một điều thực tế nên làm là thêm

android:scrollingCache="false" 

trong bố cục danh sách. Như thế này

 <ListView 
    android:layout_width="30dp" 
    android:layout_height="30dp" 
    android:id="@+id/myList" 
    android:scrollingCache="false" 
    /> 

bạn có thể lấy lý do của việc này từ đây scrollingCache?

Cảm ơn

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