ลบตัวแบ่งด้านล่างของ Android ListView


95

ListViewฉันมีความสูงคงที่ มีตัวแบ่งระหว่างรายการ แต่ยังแสดงเส้นแบ่งหลังจากรายการสุดท้าย

มีวิธีที่จะไม่แสดงตัวแบ่งหลังจากรายการสุดท้ายในListViewหรือไม่?

คำตอบ:


183

เพียงเพิ่ม android:footerDividersEnabled="false" คำอธิบาย ListView ของคุณ


29
ดูเหมือนว่าจะใช้ไม่ได้อีกต่อไปโดยเริ่มจาก 4.4.2 ฉันสามารถเรียกใช้แอปเดียวกันอย่างแท้จริงในอุปกรณ์ทดสอบจำนวนมากของฉัน (ตั้งแต่ 2.3.7 ไปจนถึง 4.4.2) และ KitKat เป็นเพียงแอปเดียวที่ดูเหมือนจะไม่มีผล ... มีความคิดอย่างไร ฉันไม่ได้เพิ่มส่วนท้ายหรือส่วนหัวใน ListView ของฉันและฉันได้ทำซ้ำสิ่งนี้บนอุปกรณ์สองเครื่อง (Nexus 5 และ HTC One M8)
Charles Madere

11
@ScootrNova ฉันใช้ 4.4.4 และเมื่อฉันตั้งค่ามุมมองlayoutHeight="wrap_content"รายการตัวแบ่งด้านล่างจะหายไป
Erhannis

1
ใช้ background = @android: color / transparent แก้ไขให้ฉัน
stef

ลองใช้วิธีแก้ปัญหานี้บน Android 5.1 และ 7.0 และใช้งานได้ดี! ขอบคุณคน
tomalf2

84

ดังที่ @ScootrNova กล่าวว่าสิ่งนี้ดูเหมือนจะทำงานแตกต่างกัน (aka buggy) ใน Android 4.4.x (ฉันไม่รู้ว่าเมื่อใดที่ปัญหาถูกนำมาใช้)

สิ่งนี้เกี่ยวข้องกับกรณีเฉพาะของการใช้โดยใช้padding+ clipToPadding="false"- ใน 4.4.x ส่วนท้ายจะถูกดึงออกมานอกมุมมอง แต่คลิปที่มีช่องว่างภายในจะเผยให้เห็น

วิธีแก้ปัญหาที่ฉันใช้คือตั้งค่าส่วนท้าย over-scroll ( android:overScrollFooter) ให้โปร่งใสซึ่งใช้งานได้ ...

ทางออกสุดท้ายของฉัน (โปรดทราบว่าandroid:footerDividersEnabledถูกเก็บไว้เพื่อความเข้ากันได้กลับ):

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="@dimen/activity_horizontal_margin"
    android:divider="@color/divider"
    android:dividerHeight="1px"
    android:clipToPadding="false"
    android:scrollbarStyle="outsideInset"
    android:overScrollFooter="@android:color/transparent"
    android:footerDividersEnabled="false"
    />

ทดสอบกับ HTC One X ที่ใช้ 4.1.1, Nexus 5 ที่ใช้ 4.4.4 และ Samsung Galaxy S5 ที่ใช้ 4.4.2 (ขอบคุณ @ Dallas187) ดูเหมือนจะทำงาน Lollipop ด้วย (ขอบคุณผู้แสดงความคิดเห็น!)


1
เพียงแค่ยืนยันว่าโซลูชันนี้ใช้ได้กับ Samsung Galaxy S5 ที่ใช้ 4.4.2
Dallas187

1
การเพิ่มandroid:overScrollFooterเคล็ดลับสำหรับฉัน ทำงานบน 5.0.2 และ 5.1
Edison Spencer

แน่นอนและฉันเชื่อว่าคุณจะต้องandroid:footerDividersEnabled="false"กลับเข้าร่วม
แซม

18

หากคุณต้องการทำสิ่งนี้โดยใช้รหัส:

listView.setFooterDividersEnabled(false);

และหากคุณใช้ ListFragment คุณสามารถรับ listview ได้โดย:

listFragment.getListView().setFooterDividersEnabled(false);

แสดงความคิดเห็นเท่านั้นเพราะสิ่งนี้ขึ้นมาเป็นอันดับ 1 ใน Google


2
ขอบคุณสำหรับรหัส - ฉันรู้สึกเศร้าเมื่อมีโซลูชันที่ใช้ XML เท่านั้น! ฉันกำลังย้ายแอปจาก iOS ไปยัง Android และจนถึงตอนนี้ฉันคิดว่าการทำสิ่งนี้ทั้งหมดในโค้ดนั้นเร็วกว่าที่ฉันเคยลองแปลงทั้งหมดเป็นรูปแบบ XML (ตามที่ฉันกำหนด UI ของ iOS ทั้งหมดไว้ในโค้ดตั้งแต่แรก ). ฉันคิดว่าวันหนึ่งฉันจะต้องเข้าใจเรื่อง XML ทั้งหมดนี้ แต่ไม่ใช่วันนี้ :)
Herr Grumps

ไม่ได้ผลสำหรับฉันใน Pixel API 25 มีเพียงข้อเสนอแนะของ Annada เท่านั้น
Tbadams

13

ดูเหมือนว่าบรรทัดด้านล่างจะไม่ทำงานบนอุปกรณ์ lollypop

listView.setFooterDividersEnabled(false);

ดังนั้นต้องใช้โค้ดด้านล่างนี้เพื่อลบตัวแบ่งหลังจากรายการสุดท้ายในรายการ

listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));

นี่ควรเป็นคำตอบที่ได้รับการยอมรับ วิธีแก้ปัญหาง่ายๆได้ผลสำหรับฉันนัดแรก
Samah

บิงโก สิ่งที่ดี. ขอบคุณสำหรับการแบ่งปัน!
Forrest

0

ใช้ background = @android: color / transparent ทำงานได้อย่างสมบูรณ์ คุณยังสามารถใช้พื้นหลังของเค้าโครงแถวของคุณได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.