178 votes

Comment créer un ListView avec des coins arrondis dans Android ?

Comment créer un ListView avec des coins arrondis dans Android ?

0 votes

Cette question est vraiment utile, tout comme votre réponse !

377voto

Legend Points 29504

Voici une façon de le faire (Merci à la documentation Android cependant !):

Ajoutez ce qui suit dans un fichier (disons customshape.xml) et placez-le ensuite dans (res/drawable/customshape.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
     <gradient 
         android:startColor="#SomeGradientBeginColor"
         android:endColor="#SomeGradientEndColor" 
         android:angle="270"/> 

    <corners 
         android:bottomRightRadius="7dp" 
         android:bottomLeftRadius="7dp" 
         android:topLeftRadius="7dp" 
         android:topRightRadius="7dp"/> 
</shape> 

Une fois que vous avez terminé de créer ce fichier, il suffit de définir l'arrière-plan de l'une des manières suivantes :

Par le code : listView.setBackgroundResource(R.drawable.customshape);

Par le biais de XML Pour cela, il suffit d'ajouter l'attribut suivant au conteneur (ex : LinearLayout ou à tout autre champ) :

android:background="@drawable/customshape"

J'espère que quelqu'un trouvera cela utile...

2 votes

Merci pour ce super conseil. Pour info, le copier-coller m'a donné une exception d'exécution disant "XmlPullParserException : Binary XML file line #4<gradient> tag requires 'angle' attribute to be a multiple of 45" Facilement résolu en changeant l'angle à 270.

0 votes

Merci pour la réparation... Mais je ne sais pas pourquoi cela pourrait se produire... Avez-vous trouvé une raison spécifique ?

0 votes

Merci pour le conseil ! Juste un problème cependant - j'ai créé un roundedrectangle.xml mais la complétion de code eclipse n'était pas disponible dans ce fichier. Il fonctionne très bien sur le fichier de mise en page main.xml. Je compte en quelque sorte sur la complétion de code pour apprendre et expérimenter. Avez-vous une idée de la raison pour laquelle elle ne fonctionne pas dans mon nouveau fichier ? Merci, D.

57voto

Kevin Points 4235

Bien que cela ait fonctionné, cela a également supprimé toute la couleur de fond. Je cherchais un moyen de ne faire que la bordure et de remplacer le code de mise en page XML par celui-ci, et c'était bon !

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke android:width="4dp" android:color="#FF00FF00" />
    <padding android:left="7dp" android:top="7dp"
            android:right="7dp" android:bottom="7dp" />
    <corners android:radius="4dp" />
</shape>

0 votes

Consultez également cette réponse

12voto

alvins Points 186

@kris-van-bael

Pour ceux qui ont des problèmes avec la mise en évidence de la sélection pour les rangées supérieure et inférieure où le rectangle de fond apparaît lors de la sélection, vous devez définir le sélecteur de votre listview sur une couleur transparente.

listView.setSelector(R.color.transparent);

Dans color.xml, il suffit d'ajouter les éléments suivants -

<color name="transparent">#00000000</color>

5 votes

Cela n'a pas fonctionné pour moi. J'ai cependant ajouté la ligne suivante, et cela a permis de s'en débarrasser : android:cacheColorHint="@android:color/transparent"

1 votes

Cela a définitivement résolu le problème de sélection pour moi - merci ! Vous pouvez également utiliser Android.R.color.transparent pour la couleur du sélecteur au lieu de créer la vôtre.

3 votes

Au lieu de le faire par programme, ajoutez ceci à votre ListView dans la mise en page XML pour masquer la couleur de sélection : Android:listSelector="#00000000"

4voto

Mise à jour

La solution de nos jours consiste à utiliser un CardView avec prise en charge intégrée des coins arrondis.


Réponse originale*

Une autre méthode que j'ai trouvée consiste à masquer votre mise en page en dessinant une image au-dessus de la mise en page. Cela pourrait vous aider. Consultez le site Android XML coins arrondis coupés

1voto

android developer Points 20939

En fait, je pense que la meilleure solution est décrite sur ce lien :

http://blog.synyx.de/2011/11/Android-listview-with-rounded-corners/

en bref, il utilise un fond différent pour les éléments du haut, du milieu et du bas, de sorte que les éléments du haut et du bas soient arrondis.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X