Intenté usar marginBottom en listView para hacer espacio entre el elemento listView, pero aún así los elementos están unidos.
¿Es posible? En caso afirmativo, ¿hay una forma específica de hacerlo?
Mi codigo esta abajo
<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>
Mi elemento de lista personalizado:
<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>
¿Cómo puedo hacer un espacio entre los elementos de la lista en este caso?
Quizás
divider
o ladividerHeight
propiedad delListView
puede resolver su problema.fuente
Aunque la solución de Nik Reiman sí funciona, descubrí que no es una solución óptima para lo que quería hacer. El uso del divisor para establecer los márgenes tuvo el problema de que el divisor ya no será visible, por lo que no puede usarlo para mostrar un límite claro entre sus elementos. Además, no agrega más "área en la que se puede hacer clic" a cada elemento, por lo tanto, si desea hacer que sus elementos sean clicables y sus elementos sean delgados, será muy difícil para cualquiera hacer clic en un elemento ya que la altura agregada por el divisor no es parte de un artículo.
Afortunadamente, encontré una mejor solución que le permite mostrar los divisores y le permite ajustar la altura de cada elemento utilizando no márgenes sino relleno. Aquí hay un ejemplo:
Vista de la lista
ListItem
fuente
Debe envolver su
ListView
artículo (por ejemployour_listview_item
) en algún otro diseño, por ejemplo,LinearLayout
y agregar margen ayour_listview_item
:De esta manera, también puede agregar espacio, si es necesario, a la derecha e izquierda del
ListView
elemento.fuente
Mi solución para agregar más espacio pero mantener la línea horizontal fue agregar
divider.xml
en lares/drawable
carpeta y definir la forma de la línea en el interior:divider.xml
entonces en mi lista hago referencia a mi divisor de la siguiente manera:
Observe que al
android:dividerHeight="16.0dp"
aumentar y disminuir esta altura, básicamente estoy agregando más relleno en la parte superior e inferior de la línea divisoria.Usé esta página como referencia: http://developer.android.com/guide/topics/resources/drawable-resource.html#stroke-element
fuente
Si desea mostrar un divisor con márgenes y sin estirarlo, use InsetDrawable (el tamaño debe estar en un formato, sobre el cual dijo @Nik Reiman):
Vista de la lista:
@ drawable / separator_line:
fuente
Puedes usar:
ejemplo:
fuente
Para mi aplicación, lo he hecho de esta manera.
justo
set the divider to null
y proporcionar altura al divisor lo hizo por mí.Ejemplo:
o
y este es el resultado
fuente
android:divider="@android:color/transparent"
.Me doy cuenta de que ya se ha seleccionado una respuesta, pero solo quería compartir lo que terminó funcionando para mí cuando me encontré con este problema.
Tenía un listView donde cada entrada en el listView estaba definida por su propio diseño, similar a lo que Sammy publicó en su pregunta. Intenté el enfoque sugerido de cambiar la altura del divisor, pero eso no terminó siendo demasiado bonito, incluso con un divisor invisible. Después de experimentar un poco, simplemente agregué un
android:paddingBottom="5dip"
elemento de diseño TextView en el archivo XML que define las entradas individuales de listView.Esto terminó dándome exactamente lo que estaba tratando de lograr mediante el uso de
android:layout_marginBottom
. Encontré esta solución para producir un resultado estéticamente más agradable que tratar de aumentar la altura del divisor.fuente
En lugar de dar margen, debe dar relleno:
O
fuente
La solución más simple con el código existente de OP (los elementos de la lista ya tienen relleno) es agregar el siguiente código:
Esta respuesta SO me ayudó.
Nota: Es posible que se encuentre con un error del reciclaje del elemento de la lista demasiado pronto en plataformas más antiguas, como se ha pedido aquí .
fuente
y establecer
paddingTop
,paddingBottom
ydividerHeight
al mismo valor para obtener el mismo espacio entre todos los elementos y el espacio en la parte superior e inferior de la lista.Me puse
clipToPadding
afalse
dejar que los puntos de vista pueden extraer en esta zona acolchada.Configuré
divider
para@null
eliminar las líneas entre los elementos de la lista.fuente
También una forma más de aumentar el espacio entre los elementos de la lista es agregar una vista vacía al código del adaptador al proporcionar el atributo layout_height con el espacio que necesita. Por ejemplo, para aumentar el espacio inferior entre los elementos de la lista, agregue esta vista ficticia (vista vacía) al final de los elementos de la lista.
Por lo tanto, esto proporcionará un espacio inferior de 15 dp entre los elementos de la vista de lista. Puede agregar esto directamente si el diseño primario es LinearLayout y la orientación es vertical o si toma los pasos apropiados para otro diseño. Espero que esto ayude :-)
fuente
solo necesita hacer que el fondo sea transparente del divisor de lista y hacer la altura de acuerdo con el espacio necesario.
fuente
Encontré una solución no tan buena para esto en caso de que esté usando un HorizontalListView, ya que los divisores no parecen funcionar con él, pero creo que funcionará de cualquier manera para el ListView más común.
Solo agrego:
en la vista inferior del diseño que infla en la clase de adaptador creará espacio entre los elementos
fuente
Para dar espacio entre las vistas dentro de una vista de lista, use relleno en sus vistas de inflado.
Puede usar
android:paddingBottom="(number)dp"
&&android:paddingTop="(number)dp"
en su vista o vistas que está inflado dentro de su vista de lista.La solución del divisor es solo una solución, porque algún día, cuando desee usar un color divisor (ahora es transparente) verá que la línea divisoria se ha extendido.
fuente
Muchas de estas soluciones funcionan. Sin embargo, si todo lo que desea es poder establecer el margen entre los elementos, el método más simple que se me ocurrió es envolver su elemento, en su caso CheckedTextView, en un diseño lineal y poner el formato de margen para el elemento en eso, no el diseño raíz. Asegúrese de asignar un id a este diseño de envoltura y crearlo junto con su CheckedTextView en su adaptador.
Eso es. En efecto, está creando instancias del margen en el nivel de elemento para ListView. Debido a que ListView no conoce ningún diseño de elemento, solo su adaptador sí. Básicamente, esto infla la parte del diseño del elemento que antes se ignoraba.
fuente
Esto te ayudará a agregar la altura del divisor.
Si desea agregar una vista personalizada, puede agregar una vista pequeña en el diseño del elemento listView.
fuente