2012-06-12 28 views
12

Tôi dường như gặp sự cố giao diện người dùng với chế độ xem danh sách. Tôi có một listview và chọn bất kỳ mục nào trong danh sách, làm nổi bật toàn bộ listview. Lựa chọn đang hoạt động tốt, tôi nhận được đúng mục trong trình nghe.Android listview toàn bộ danh sách được chọn

Nhưng vấn đề là khi tôi chọn bất kỳ mục nào, toàn bộ listview được đánh dấu, do đó rất khó để biết được hàng nào đã được chọn.

Tính năng này hoạt động tốt trên Android> 3.1 - Hiện tại tôi đang thử nghiệm trên thiết bị 2.3.

<ListView 
     android:id="@+id/myList" 
     android:layout_width="match_parent" 
     android:layout_height="300dp" 
     android:layout_marginTop="@dimen/margin_medium" 
     android:background="@drawable/border" 
     android:listSelector="#99000000" 
     android:scrollbarFadeDuration="1000000" 
     android:scrollbars="vertical" > 
    </ListView> 

Trả lời

-3

tôi cố định này bằng cách loại bỏ dòng này: (không chắc chắn lý do tại sao nó làm việc)

android: listSelector = "# 99.000.000"

26

Gần đây tôi có cùng một vấn đề, nhưng lý do là trong Lỗi Android < 3.0: nếu bạn đặt @color làm đối tượng có thể kéo cho công cụ chọn mục danh sách của bạn, thì nó sẽ lấp đầy toàn bộ khu vực danh sách. Giải pháp là sử dụng 'hình dạng' có thể vẽ được thay vì @color.

Vì vậy, tạo một file XML mới trong res/drawable thư mục với nội dung tương tự:

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

    <solid android:color="@color/my_list_item_pressed_color" /> 
</shape> 

Và tham chiếu đã tạo drawable trong selector ListView của bạn cho state_pressed (cũng tạo ra như là một tập tin XML trong res/drawable thư mục):

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:state_pressed="true" android:drawable="@drawable/list_item_pressed_bg" /> 
    <item android:drawable="@android:color/transparent" /> 
</selector> 

Và sử dụng công cụ chọn này trong ListView:

của bạn

Đó là tất cả. Hoạt động ít nhất với Android 2.2-2.3.

+0

Cảm ơn! Những lỗi trước 3.0/4.0 này thực sự gây phiền nhiễu, bởi vì chúng không được ghi chép gì cả! –

+0

Tôi đã tìm thấy bài đăng này giờ trước. Lưu ý, bạn có thể làm điều đó một cách lập trình: 'ShapeDrawable sd = new ShapeDrawable (new RectShape()); sd.getPaint(). setColor (Color.RED); listview.setSelector (sd); ' –

1

Nếu bạn không muốn thay đổi công cụ chọn, bạn cũng có thể đặt làm nền của bố cục của mục danh sách, thay vì trong trường ListSelector của ListView. Các mục danh sách nhận trạng thái "đã chọn" khi chạm vào và màu được hiển thị chính xác.

Tính năng này hoạt động với tất cả các phiên bản Android.

Ex: Đây là mục danh sách bố trí của bạn

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background_color"> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Your text here" /> 
</LinearLayout> 

Và danh sách của bạn mà không chọn danh sách:

<ListView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
Các vấn đề liên quan