7

Nếu bạn đặt selectability của một mục preference thành sai, bạn sẽ nhận thấy rằng các ngăn xung quanh mục đó sẽ biến mất.Có cách nào để giữ dải phân cách xung quanh tùy chọn không thể chọn không?

Bạn có biết liệu có cách nào để giữ các ngăn đó không?

Tôi đã xem API ListView và không thể tìm thấy giải pháp có thể áp dụng ở đây, vì không có thuộc tính có thể chọn cho các mục ListView (ngoại trừ headersfooters).

Cảm ơn!

Trả lời

0

một số mã ví dụ sẽ hữu ích! bạn đã đặt bộ chia trong phần tử ListView chưa? nếu có, hãy kiểm tra this post.

<ListView 
    //... 
    android:divider="@color/black" 
    /> 

Nếu không, bạn có thể tạo ListElementView tùy chỉnh và thêm bộ chia của bạn vào bố cục xml.

+1

Tôi không nói rằng danh sách mục tùy chọn của tôi không có ngăn chia. Tôi đang nói, rằng các mục được thực hiện * không thể lựa chọn * kết thúc với không có ngăn xung quanh chúng. Không có gì đặc biệt về mã, vì nó hoạt động như khuôn khổ dự định nó. Tôi chỉ đang tìm cách tùy chỉnh trải nghiệm mặc định này. Cảm ơn đã giúp đỡ! –

1

Tôi đã làm điều đó với một hack.

<Preference android:layout="@layout/preference_divider" /> 
<Preference android:title="@string/whatever" android:selectable="false" /> 

res/layout/preference_divider.xml

<?xml version="1.0" encoding="utf-8"?> 
<View xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="#cccccc" 
    android:layout_width="fill_parent" 
    android:layout_height="1px" /> 
+0

Tại sao bạn thay đổi nó thành 1px? 0px hoạt động tốt cho tôi, chỉ cần tự hỏi nếu có thể có vấn đề với 0px trên một số thiết bị hoặc phiên bản Android? – tomrozb

0

Đây là một "lừa" mà làm việc cho tôi. Chỉ cần đặt android: focusable = "true" vào bất kỳ mục nào bên trong tùy chọn. Điều này sẽ làm cho toàn bộ dòng tùy chọn không thể nhấp được.

0

Nếu bạn muốn sử dụng tùy chọn để hiển thị một số văn bản, bạn cũng có thể sử dụng EditTextPreference không thể chỉnh sửa. Tùy chọn vẫn sẽ được chọn nhưng chỉ hiển thị nội dung của nó khi được chọn.

<EditTextPreference 
    android:editable="false" 
    ... /> 
0

Dòng bạn muốn ẩn được gọi là 'dải phân cách'. PreferenceActivity mở rộng ListActivity và như bạn có thể mong đợi nó sử dụng ListView. Bạn có thể thay đổi dải phân cách trong một ListView. Trong số PreferenceActivity:

 ListView lv = getListView(); 
     lv.setDivider(new ColorDrawable(Color.TRANSPARENT)); 
     lv.setDividerHeight(0); 
Các vấn đề liên quan