J'ai essayé d'utiliser marginBottom sur listView pour faire de l'espace entre les éléments listView, mais les éléments sont toujours attachés ensemble.
Est-ce même possible? Si oui, existe-t-il une manière spécifique de le faire?
Mon code est ci-dessous
<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>
Mon élément de liste personnalisé:
<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>
Comment puis-je faire un espacement entre les éléments de la liste dans ce cas?
Peut
divider
- être que ladividerHeight
propriété duListView
peut résoudre votre problème.la source
Bien que la solution de Nik Reiman fonctionne, j'ai trouvé que ce n'était pas une solution optimale pour ce que je voulais faire. L'utilisation du séparateur pour définir les marges posait le problème que le séparateur ne serait plus visible, vous ne pouvez donc pas l'utiliser pour montrer une frontière claire entre vos articles. De plus, il n'ajoute pas plus de "zone cliquable" à chaque élément, donc si vous voulez rendre vos éléments cliquables et vos éléments sont minces, il sera très difficile pour quiconque de cliquer sur un élément car la hauteur ajoutée par le séparateur n'est pas partie d'un article.
Heureusement, j'ai trouvé une meilleure solution qui vous permet à la fois d'afficher des séparateurs et de régler la hauteur de chaque élément en utilisant non pas des marges mais du rembourrage. Voici un exemple:
ListView
ListItem
la source
Vous devez envelopper votre
ListView
article (par exempleyour_listview_item
) dans une autre disposition, par exempleLinearLayout
et ajouter une marge àyour_listview_item
:De cette façon, vous pouvez également ajouter de l'espace, si nécessaire, à droite et à gauche de l'
ListView
élément.la source
Ma solution pour ajouter plus d'espace mais garder la ligne horizontale était d'ajouter
divider.xml
dans leres/drawable
dossier et de définir la forme de la ligne à l'intérieur:divider.xml
puis dans ma liste je fais référence à mon diviseur comme suit:
remarquez
android:dividerHeight="16.0dp"
en augmentant et en diminuant cette hauteur, j'ajoute essentiellement plus de rembourrage en haut et en bas de la ligne de séparation.J'ai utilisé cette page pour référence: http://developer.android.com/guide/topics/resources/drawable-resource.html#stroke-element
la source
Si vous voulez montrer un diviseur avec des marges et sans l'étirer - utilisez InsetDrawable (la taille doit être dans un format, à propos duquel dit @Nik Reiman):
ListView:
@ drawable / separator_line:
la source
Vous pouvez utiliser:
exemple:
la source
Pour ma candidature, je l'ai fait de cette façon
juste
set the divider to null
et fournir de la hauteur au séparateur a fait pour moi.Exemple :
ou
et c'est le résultat
la source
android:divider="@android:color/transparent"
.Je me rends compte qu'une réponse a déjà été sélectionnée, mais je voulais juste partager ce qui a fini par fonctionner pour moi lorsque j'ai rencontré ce problème.
J'avais une listView où chaque entrée dans la listView était définie par sa propre mise en page, similaire à ce que Sammy a posté dans sa question. J'ai essayé l'approche suggérée de changer la hauteur du séparateur, mais cela n'a pas fini par être trop joli, même avec un séparateur invisible. Après quelques expérimentations, j'ai simplement ajouté un
android:paddingBottom="5dip"
au dernier élément de disposition TextView dans le fichier XML qui définit les entrées individuelles de listView.Cela a fini par me donner exactement ce que j'essayais de réaliser via l'utilisation de
android:layout_marginBottom
. J'ai trouvé cette solution pour produire un résultat plus esthétique que d'essayer d'augmenter la hauteur du séparateur.la source
Au lieu de donner une marge, vous devez donner un rembourrage:
OU
la source
La solution la plus simple avec le code existant d'OP (les éléments de liste ont déjà un remplissage) consiste à ajouter le code suivant:
Cette réponse SO m'a aidé.
Remarque: Vous pouvez rencontrer un bogue de l'élément de liste recyclant trop tôt sur les anciennes plates-formes, comme cela a été demandé ici .
la source
et définissez
paddingTop
,paddingBottom
etdividerHeight
sur la même valeur pour obtenir un espacement égal entre tous les éléments et l'espace en haut et en bas de la liste.J'ai décidé
clipToPadding
defalse
laisser les vues être dessinées dans cette zone rembourrée.J'ai mis
divider
à@null
supprimer les lignes entre les éléments de la liste.la source
Une autre façon d'augmenter l'espacement entre les éléments de la liste consiste à ajouter une vue vide à votre code d'adaptateur en fournissant l'attribut layout_height avec l'espacement dont vous avez besoin. Par exemple, afin d'augmenter l'espacement inférieur entre vos éléments de liste, ajoutez cette vue factice (vue vide) à la fin de vos éléments de liste.
Ainsi, cela fournira un espacement inférieur de 15 dp entre les éléments d'affichage de liste. Vous pouvez l'ajouter directement si la disposition parent est LinearLayout et que l'orientation est verticale ou prenez les mesures appropriées pour une autre disposition. J'espère que cela t'aides :-)
la source
il vous suffit de rendre l'arrière-plan transparent du séparateur de liste et de faire la hauteur en fonction de votre espace nécessaire.
la source
J'ai trouvé une solution pas si bonne pour cela au cas où vous utilisez une HorizontalListView, car les séparateurs ne semblent pas fonctionner avec, mais je pense que cela fonctionnera dans les deux cas pour le ListView plus commun.
Ajout juste:
dans la vue la plus basse de la disposition que vous gonflez dans la classe d'adaptateur créera un espacement entre les éléments
la source
Afin de donner un espacement entre les vues à l'intérieur d'une liste, veuillez utiliser un remplissage sur vos vues gonflées.
Vous pouvez utiliser
android:paddingBottom="(number)dp"
&&android:paddingTop="(number)dp"
sur votre vue ou les vues que vous gonflez dans votre vue de liste.La solution de séparation n'est qu'un correctif, car un jour, lorsque vous voudrez utiliser une couleur de séparation (en ce moment, elle est transparente), vous verrez que la ligne de séparation est étirée.
la source
Beaucoup de ces solutions fonctionnent. Cependant, si tout ce que vous voulez est de pouvoir définir la marge entre les éléments, la méthode la plus simple que j'ai trouvée consiste à encapsuler votre élément - dans votre cas, CheckedTextView - dans un LinearLayout et à mettre en forme votre marge pour l'élément en cela, pas le root-layout. Assurez-vous de donner à cette disposition d'habillage un identifiant et de le créer avec votre CheckedTextView dans votre adaptateur.
C'est ça. En fait, vous instanciez la marge au niveau de l'élément pour ListView. Parce que ListView ne connaît aucune disposition d'élément - seul votre adaptateur le sait. Cela gonfle essentiellement la partie de la mise en page de l'élément qui était ignorée auparavant.
la source
Cela vous aidera à ajouter la hauteur du séparateur.
Si vous souhaitez ajouter une vue personnalisée, vous pouvez ajouter une petite vue dans la disposition d'élément listView elle-même.
la source