2012-06-19 31 views
29

Tôi đang cố gắng đặt lề thành bộ chia listview.
Dải phân cách một dòng tiêu tan:Biên độ phân chia danh sách

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="line" > 
    <stroke 
     android:dashGap="1dp" 
     android:dashWidth="1.5dp" 
     android:width="1dp" 
     android:color="#FF404040" /> 

    <size android:height="3dp" /> 

</shape> 

listview nơi tôi đặt chia

<ListView 
    android:id="@+id/lv_news_feed_list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/white" 
    android:divider="@drawable/ch_dashed_line_divider" 
    /> 

nhưng tôi muốn có một chia lề trái và phải. Tôi cũng đã cố gắng đặt hình đệm thành hình, nhưng listview bỏ qua phần đệm.

<padding 
     android:bottom="15dp" 
     android:left="15dp" 
     android:right="15dp" 
     android:top="15dp" /> 

Có khả năng thiết lập một quỹ để đảm bảo chia listview - ngoại trừ trong getView() của Adaptor?

+0

Giải pháp tốt nhất: http://stackoverflow.com/questions/14054364/how-to-assign-padding-to-listview-item-divider-line?lq=1 – ASP

Trả lời

81

Inset là con đường để đi

<?xml version="1.0" encoding="UTF-8"?> 
<inset xmlns:android="http://schemas.android.com/apk/res/android" 
    android:insetLeft="15dp" 
    android:insetRight="15dp" > 

    <shape 
     android:shape="line" > 
     <stroke 
      android:dashGap="1dp" 
      android:dashWidth="1.5dp" 
      android:width="1dp" 
      android:color="#FF404040" /> 

      <size android:height="3dp" /> 

    </shape> 

</inset> 
+0

Dễ dàng trả lời đúng nhất ở đây. Đây là cấu trúc xml inset. – Adam

+7

Nếu chúng tôi chỉ muốn một dòng, hãy sử dụng và đặt thuộc tính "android: dividerHeight" trong ListView – Maragues

3

U có thể sử dụng Gradient để có được Lề phải và trái thay vì đột quỵ .. Hãy thử mẫu này nó bắt đầu và kết thúc với màu đen, ở trung tâm u'll có được trắng .. Có vẻ như u've cho lề

<gradient android:startColor="#000000" android:centerColor="#ffffff" 
    android:endColor="#000000" /> 
+0

Đây là giải pháp tốt , nhưng tôi cần đột quỵ cho đường đứt nét trong dải phân cách, vì vậy tôi không thể sử dụng gradient. – Fabian

1

Tôi không tin là có thể:/Mặc dù nếu bạn thêm bản vẽ của riêng mình ở cuối mỗi mục danh sách và xóa bộ chia ListView, bạn có thể tùy chỉnh nó theo cách bạn muốn :)

Tạo thư mục res/có thể vẽ và tạo xml mới:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <solid android:color="#666666"></solid> 

</shape> 

..Sau đó, sử dụng mục đó trong danh sách của bạn.

Hoặc một cách thực sự nhanh chóng và bẩn sẽ OFC để tạo ra một LinearLayout mỏng (hoặc một số bố trí khác) với nền màu ở dưới cùng của các mục trong danh sách để giả mạo một chia ListView tùy biến ..

Không phải là một sollution thích , chỉ cần một số ý tưởng fixit;)

+0

Đây là ý tưởng đầu tiên của tôi. Đính kèm nó trong Adapter nhưng tôi không biết nếu điều này là peformant. – Fabian

+0

Hãy thử nó ra và xem;) Hoặc làm cho ListView tùy chỉnh của riêng bạn, mặc dù tôi nghi ngờ nó sẽ có giá trị rắc rối. – DecodeGnome

5

Bạn có thể sử dụng các ý tưởng sau đây:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/table_background"/> 
    </shape> 
</item> 
<item android:left="2dp" android:right="2dp"> 
    ... your shape here ... 
</item> </layer-list> 

Nó làm việc cho tôi. Hy vọng nó sẽ giúp.

16

Sử dụng 'inset' .....

(list_divider.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<inset xmlns:android="http://schemas.android.com/apk/res/android" 
    android:insetLeft="50dp" 
    android:insetRight="50dp" > 

<shape> 
    <solid android:color="@color/orange" /> 
    <corners android:radius="2.0dip" /> 
</shape> 

</inset> 

và theo quan điểm của danh sách của bạn thêm như thế này ...

<ListView 
    android:dividerHeight="2dp" 
    android:divider="@drawable/list_divider" 
    ... 
/> 

bạn có thể đặt giá trị inset s mong muốn ...

+1

Bạn có thể đặt phần tử '' trực tiếp vào 'hình dạng' để tránh lặp lại chiều cao cho mỗi lần xem danh sách. – Natix

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