Tôi có một bộ chọn có thể kéo làm nền cho mỗi mục trong một ListView
để làm nổi bật hàng đã chọn. Eveything hoạt động tốt trong Ice Cream Sandwich, nhưng dường như không hoạt động trong Jelly Bean. Không thể tìm thấy bất kỳ tài liệu nào nói rằng những thay đổi nào có thể đã khiến nó ngừng hoạt động và những gì tôi cần làm để khắc phục.Bộ chọn có thể vẽ không hoạt động trong Jelly Bean
Bằng cách không hoạt động, ý tôi là khi tôi nhấp vào một hàng ở ListView
, màu nền của mặt hàng không chuyển màu @color/blue
, nhưng nó có trong ICS.
Đây là mã selector Tôi đang sử dụng (listing_selector.xml):
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:drawable="@color/blue" />
<item android:state_pressed="true" android:drawable="@color/blue" />
<item android:state_activated="true" android:drawable="@color/blue_selected" />
<item android:state_selected="true" android:drawable="@color/blue_selected" />
<item android:drawable="@android:color/transparent" />
</selector>
Đây là cách bố trí của các ListView
mục:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@color/listing_selector"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
/>
</RelativeLayout>
này tài nguyên màu xanh:
<resources>
<color name="blue">#ff33b5e5</color>
</resources>
CẬP NHẬT 1:
Cố gắng di chuyển chọn từ thư mục color
vào thư mục drawable
và cập nhật các mã này:
android:background="@drawable/listing_selector"
UPDATE 2:
Ngoài ra, trên ListView
, thử thêm này:
<ListView android:id="@android:id/list"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:listSelector="@drawable/listing_selector"
/>
CẬP NHẬT 3:
Tôi nghĩ rằng đó có thể là một cái gì đó trong mã của tôi, nhưng tôi đã xóa tất cả mã khỏi onListItemClick
của ListView
và vẫn là selector
không hoạt động.
CẬP NHẬT 4:
tôi đã thu hẹp nó xuống để state_selected
hoặc state_activated
không làm việc như, state_pressed
dường như được làm việc
CẬP NHẬT 5:
Tôi nghĩ rằng tôi đã nhầm lẫn . Tôi không nghĩ rằng bộ chọn được công nhận, ở tất cả. Tôi đã nhầm lẫn việc đánh dấu tích hợp ListView
làm công cụ chọn của tôi. Tôi đang tự hỏi nếu nó có cái gì để làm với cách dự án của tôi được thiết lập. Tôi có bộ chọn trong một lớp thư viện. Có lẽ một cái gì đó thay đổi với điều đó từ ICS để JB, tuy nhiên di chuyển bộ chọn để dự án ứng dụng của tôi dường như không sửa chữa nó.
CẬP NHẬT 6:
Ok, sau khi một số tóc hơn kéo, tôi đã thu hẹp nó xuống, một lần nữa, hoặc là state_selected
hoặc state_activated
không được công nhận, như thay đổi màu sắc cho state_pressed
làm việc, điều đó có nghĩa công cụ chọn của tôi đang được công nhận. Từ các ý kiến trong có vẻ là một cái gì đó với ứng dụng của tôi đặc biệt là những người khác đã có thể có được bộ chọn làm việc với Jelly Bean.
Mặc dù điều gì đó thú vị khác là việc thay đổi giá trị drawable
cho trạng thái mặc định không được nhận dạng. Nơi tôi có color/transparent
, tôi sẽ nghĩ rằng việc thay đổi màu đó sẽ khiến danh sách thay đổi thành màu đó, nhưng không.
Ngoài ra, tính năng này cũng không hoạt động trong ICS.
CẬP NHẬT 7:
Sau tóc thậm chí nhiều hơn kéo, tôi đã phát hiện ra rằng lâu nhấn và giữ một kết quả mục trình đơn trong màu của mục mà được thay đổi. Chỉ cần nhấp vào một mục vẫn không hoạt động. Thậm chí không chắc chắn về phương tiện.
** Cập nhật cuối cùng: **
tôi bỏ cuộc, tôi loại bỏ các selector và sáng chỉ làm mới ListView
nhấp chuột và ghi nhớ vị trí nhấp và làm nổi bật nó từ mã. Không lý tưởng, nhưng không đáng để cố gắng sửa chữa.
Khi bạn thử UPDATE 2, bạn đã xóa android: background khỏi mục danh sách của mình. Tôi sử dụng android: listSelector cho danh sách và sau đó không có android: background được định nghĩa cho mục danh sách; và mọi thứ đều hiệu quả với tôi. Ngoài ra, tôi không chắc chắn nếu nó liên quan nhưng tôi cũng có android: cacheColorHint = "@ null". – Chris
@ Chris Yea, đã cố gắng không hoạt động. Tôi đã thêm bản cập nhật mới (# 5). Tôi tự hỏi nếu vấn đề là với cách tôi có thiết lập dự án của tôi? –
Thiết lập dự án sẽ không liên quan đến vấn đề này giả sử bạn có phụ thuộc Android của bạn hiển thị .... nhật thực về cơ bản buộc bạn phải làm. Mẹo về điều màu sắc có thể drawable, sử dụng android: color cho bộ chọn xml trong res/color và android: drawable cho bộ chọn xml trong res/drawable. Đối với những gì bạn có có lẽ không có lý do để sử dụng nó như là một drawable chứ không phải là một màu sắc. Và màu sắc hoàn toàn có độ mờ đục đầy đủ, vì vậy # ff33b5e5 giống như # 33b5e5 – syklon