Risposte:
Basta aggiungere
android:footerDividersEnabled="false"
alla tua descrizione ListView
layoutHeight="wrap_content"
, il divisore inferiore scompare.
Come ha detto @ScootrNova, questo sembra comportarsi in modo diverso (noto anche come buggy) in Android 4.4.x (non so esattamente quando viene introdotto il problema)
Ciò è correlato al caso specifico dell'utilizzo di padding
+ clipToPadding="false"
- in 4.4.x il piè di pagina è disegnato fuori dalla vista ma le clip nel riempimento lo rivelano.
La soluzione che ho usato è stata impostare il footer over-scroll ( android:overScrollFooter
) su trasparente che in qualche modo funziona ...
La mia soluzione finale (nota che android:footerDividersEnabled
viene mantenuta per la retrocompatibilità):
<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"
/>
testato su un HTC One X con 4.1.1, un Nexus 5 con 4.4.4 e un Samsung Galaxy S5 con 4.4.2 (grazie a @ Dallas187). Sembra che funzioni anche Lollipop. (grazie ai commentatori!)
android:overScrollFooter
fatto il trucco per me. Lavorare su 5.0.2 e 5.1.
android:footerDividersEnabled="false"
di back compat
Se vuoi farlo tramite codice è:
listView.setFooterDividersEnabled(false);
e se stai usando un ListFragment puoi ottenere listview da:
listFragment.getListView().setFooterDividersEnabled(false);
Commentato solo perché questo risulta come # 1 in Google
Sembra che la linea inferiore non funzioni sul dispositivo lecca-lecca.
listView.setFooterDividersEnabled(false);
Quindi è necessario utilizzare questo codice di seguito per rimuovere il divisore dopo l'ultimo elemento nell'elenco.
listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));