Respostas:
Basta adicionar
android:footerDividersEnabled="false"
à sua descrição ListView
layoutHeight="wrap_content"
, o divisor inferior desaparece.
Como @ScootrNova disse, isso parece estar se comportando de maneira diferente (também conhecido como bug) no android 4.4.x (não sei exatamente quando o problema foi apresentado)
Isso está relacionado ao caso específico de usar padding
+ clipToPadding="false"
- em 4.4.x o rodapé é desenhado fora da visualização, mas os clipes para preenchimento o revelam.
A solução que usei foi definir o rodapé over-scroll ( android:overScrollFooter
) para transparente, o que de alguma forma funciona ...
Minha solução final (observe que android:footerDividersEnabled
é mantida para compatibilidade com versões anteriores):
<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"
/>
testado em um HTC One X rodando 4.1.1, um Nexus 5 rodando 4.4.4 e um Samsung Galaxy S5 rodando 4.4.2 (graças a @ Dallas187). Parece estar funcionando Lollipop também. (graças aos comentaristas!)
android:overScrollFooter
fez o truque para mim. Trabalhando em um 5.0.2 e 5.1.
android:footerDividersEnabled="false"
para back compat
Se você quiser fazer isso por código:
listView.setFooterDividersEnabled(false);
e se você estiver usando um ListFragment, poderá obter a visualização da lista:
listFragment.getListView().setFooterDividersEnabled(false);
Apenas comentado porque aparece como nº 1 no google
Parece que a linha abaixo não funciona no dispositivo lollypop.
listView.setFooterDividersEnabled(false);
Portanto, precisa usar o código abaixo para remover o divisor após o último item da lista.
listView.setOverscrollFooter(new ColorDrawable(Color.TRANSPARENT));