O divisor horizontal mais importante e mais baixo não aparece no ListView
-
23-09-2019 - |
Pergunta
Estou usando um ListView. Mas a barra horizontal mais elevada e mais baixa não aparece. Por quê? Estou usando isso:
android:divider="@android:drawable/divider_horizontal_bright"
Solução
Você já olhou para o cenário android:headerDividersEnabled
e android:footerDividersEnabled
no ListView
?
Além disso, se você procurar drawDivider
dentro Platform/Frameworks/Base/+/Master/Core/Java/Android/Widger/ListView.java no Repositório de código aberto Android, você poderá encontrar mais algumas pistas.
Outras dicas
Adicione um rodapé dummy e cabeçalho
listViewContato = (ListView) view.findViewById(R.id.listview_contatos);
listViewContato.addHeaderView(new View(getActivity()));
listViewContato.addFooterView(new View(getActivity()));
Veja como eu o implementei ... o divisor de fundo aparece após o definir android:paddingBottom
para o ListView
. Mas no meu caso depois de definir android:paddingTop
Os divisores superior e inferior não estão aparecendo. Eu não sei por quê. Então eu adicionei no meu list_item_layout.xml
O seguinte código:
<View
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="?android:attr/listDivider" />
E no meu adaptador, só mudando a visibilidade dessa visão:
View topDivider = v.findViewById(R.id.divider);
if (position == 0) {
topDivider.setVisibility(View.VISIBLE);
} else {
topDivider.setVisibility(View.GONE);
}
Espero que isso tenha útil para alguém.
Eu tive o mesmo problema com Libslidemenu.
Como android:headerDividersEnabled
Definido como True, não mostrou o divisor de cabeçalho no menu deslizante, eu o resolvi mudando slidemenu.xml
(não slidemenu_listitem.xml
) para
<LinearLayout ...>
<LinearLayout ...>
<ImageView ...> (this is the header image on top of the menu)
<View
android:layout_width="250dip"
android:layout_height="2dip"
android:background="@drawable/divider" />
<ListView ...> (this is the ListView for the MenuItems)
</LinearLayout>
<FrameLayout ...>
</FrameLayout ...>
</LinearLayout>
Isso adicionará o divisor manualmente.