Tentei usar marginBottom no listView para criar espaço entre o item listView, mas ainda assim os itens estão anexados.
Isso é possível? Se sim, existe uma maneira específica de fazer isso?
Meu código está abaixo
<LinearLayout
android:id="@+id/alarm_occurences"
android:layout_width="fill_parent"
android:orientation="vertical"
android:layout_height="fill_parent"
android:background="#EEEEFF"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:id="@+id/occurences"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Meu item personalizado da lista:
<com.android.alarm.listItems.AlarmListItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/alarm_item_background"
android:layout_marginBottom="10dp"
>
<CheckedTextView
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:textSize="20sp"
android:textStyle="bold"
android:typeface="serif"
android:padding="10dp"
/>
</com.android.alarm.listItems.AlarmListItem>
Como posso espaçar os itens da lista nesse caso?
Talvez
divider
oudividerHeight
propriedade doListView
pode resolver seu problema.fonte
Embora a solução de Nik Reiman funcione, achei que não era uma solução ideal para o que queria fazer. O uso do divisor para definir as margens teve o problema de que o divisor não será mais visível, portanto você não pode usá-lo para mostrar um limite claro entre seus itens. Além disso, ele não adiciona mais "área clicável" a cada item. Portanto, se você deseja tornar seus itens clicáveis e finos, será muito difícil alguém clicar em um item, pois a altura adicionada pelo divisor não é parte de um item.
Felizmente, encontrei uma solução melhor que permite mostrar divisórias e ajustar a altura de cada item usando não margens, mas preenchimento. Aqui está um exemplo:
Exibição de lista
ListItem
fonte
Você deve envolver seu
ListView
item (digamosyour_listview_item
) em algum outro layout, por exemplo,LinearLayout
e adicionar margem ayour_listview_item
:Dessa forma, você também pode adicionar espaço, se necessário, à direita e esquerda do
ListView
item.fonte
Minha solução para adicionar mais espaço, mas manter a linha horizontal, foi adicionar
divider.xml
ares/drawable
pasta e definir o formato da linha dentro:divider.xml
então, na minha lista, refiro meu divisor da seguinte maneira:
note que
android:dividerHeight="16.0dp"
, aumentando e diminuindo essa altura, basicamente adiciono mais preenchimento na parte superior e inferior da linha divisória.Usei esta página para referência: http://developer.android.com/guide/topics/resources/drawable-resource.html#stroke-element
fonte
Se você quiser mostrar um divisor com margens e sem esticá-lo - use InsetDrawable (o tamanho deve estar em um formato, sobre o qual disse @Nik Reiman):
Exibição de lista:
@ drawable / separator_line:
fonte
Você pode usar:
exemplo:
fonte
Para minha aplicação, eu fiz dessa maneira
apenas
set the divider to null
e fornecer altura ao divisor fez por mim.Exemplo:
ou
e isso é resultado
fonte
android:divider="@android:color/transparent"
.Percebo que uma resposta já foi selecionada, mas eu só queria compartilhar o que acabou funcionando para mim quando me deparei com esse problema.
Eu tinha um listView em que cada entrada no listView era definida por seu próprio layout, semelhante ao que Sammy postou em sua pergunta. Tentei a abordagem sugerida para alterar a altura do divisor, mas isso não parecia muito bonito, mesmo com um divisor invisível. Após algumas experiências, simplesmente adicionei um
android:paddingBottom="5dip"
ao último elemento de layout do TextView no arquivo XML que define entradas individuais do listView.Isso acabou me dando exatamente o que eu estava tentando alcançar através do uso de
android:layout_marginBottom
. Encontrei esta solução para produzir um resultado mais esteticamente agradável do que tentar aumentar a altura do divisor.fonte
Em vez de dar margem, você deve dar preenchimento:
OU
fonte
A solução mais simples com o código existente do OP (os itens da lista já possuem preenchimento) é adicionar o seguinte código:
Esta resposta SO me ajudou.
Nota: Você pode enfrentar um erro na reciclagem de itens da lista muito cedo em plataformas mais antigas, conforme solicitado aqui .
fonte
e definir
paddingTop
,paddingBottom
edividerHeight
com o mesmo valor para obter espaçamento igual entre todos os elementos e espaço na parte superior e inferior da lista.Defino
clipToPadding
parafalse
permitir que as vistas sejam desenhadas nesta área acolchoada.Defino
divider
como@null
remover as linhas entre os elementos da lista.fonte
Além disso, mais uma maneira de aumentar o espaçamento entre os itens da lista é incluir uma visualização vazia no código do adaptador, fornecendo ao atributo layout_height o espaçamento necessário. Por exemplo, para aumentar o espaçamento inferior entre os itens da sua lista, adicione esta exibição fictícia (exibição vazia) ao final dos itens da lista.
Portanto, isso fornecerá um espaçamento inferior de 15 dp entre os itens da exibição em lista. Você pode adicioná-lo diretamente se o layout principal for LinearLayout e a orientação vertical, ou seguir as etapas apropriadas para outro layout. Espero que isto ajude :-)
fonte
você só precisa tornar o plano de fundo transparente do divisor da lista e aumentar a altura de acordo com o espaço necessário.
fonte
Encontrei uma solução não tão boa para isso, caso você esteja usando um HorizontalListView, pois os divisores não parecem funcionar com ele, mas acho que funcionará de qualquer maneira para o ListView mais comum.
Apenas adicionando:
na vista inferior do layout que você inflar na classe do adaptador criará espaçamento entre os itens
fonte
Para fornecer espaçamento entre as visualizações dentro de um listView, use preenchimento nas visualizações infladas.
Você pode usar
android:paddingBottom="(number)dp"
&&android:paddingTop="(number)dp"
na sua visualização ou visualizações que você inflar dentro da sua lista.A solução divisória é apenas uma correção, porque um dia, quando você desejar usar uma cor divisória (agora é transparente), verá que a linha divisória foi esticada.
fonte
Muitas dessas soluções funcionam. No entanto, se tudo o que você deseja é poder definir a margem entre os itens, o método mais simples que eu inventei é agrupar seu item - no seu caso, o CheckedTextView - em um LinearLayout e colocar a formatação da margem para o item, não o layout raiz. Certifique-se de fornecer um ID a esse layout de empacotamento e criá-lo junto com o CheckedTextView no seu adaptador.
É isso aí. Com efeito, você está instanciando a margem no nível do item para o ListView. Como o ListView não conhece nenhum layout de item - apenas seu adaptador. Isso basicamente infla a parte do layout do item que estava sendo ignorado antes.
fonte
Isso ajudará você a adicionar a altura do divisor.
Se você deseja adicionar uma exibição personalizada, é possível adicionar uma pequena exibição no próprio layout do item listView.
fonte