web-dev-qa-db-fra.com

Hauteur de ligne GridView

J'ai un GridView qui affiche des images qui sont malheureusement de tailles différentes. Ils sont affichés entre deux lignes de texte:

text1.1                text1.2
ImageView(IMAGE1)      ImageView(IMAGE2)
text2.1                text2.2

text3.1
ImageView(IMAGE3)
text4.1

etc....

Si IMAGE1 est de la même hauteur que IMAGE2, tout va bien, mais si IMAGE1 est plus long que IMAGE2, text2.1 fonctionnera dans text3.1 (le remplissage ne semble pas beaucoup aider, car il y en a trop en grande partie lorsque les images sont de la même hauteur).

Je sais qu'il existe un moyen d'étirer les images dans ImageView afin qu'elles aient la même hauteur, mais est-il possible de conserver les images telles quelles et de définir hauteur de ligne d'une manière ou d'une autre?

26
kozyr

Vous contrôlez la hauteur de vos rangées, grâce à ce que vous y mettez. Étant donné que vos cellules semblent avoir plus d'un widget, elles sont probablement enveloppées dans un LinearLayout ou quelque chose. Définissez votre LinearLayouts à une hauteur spécifique, et les lignes auront toutes cette hauteur.

Personnellement, je pense que vous devriez redimensionner vos images si vous voulez avoir du texte au-dessus et en dessous de chaque image, cellule par cellule.

28
CommonsWare

Utilisez drawable comme arrière-plan sur la disposition qui est votre cellule de grille et définissez ce drawable avec:

<size Android:height="<some height>" />

Par exemple:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">
<solid Android:color="#ffffff"/>
<size Android:height="60dip" />
</shape>
7
CloudWalker

Voici une solution alternative qui pré-mesure les éléments et définit la hauteur de chaque cellule à la hauteur maximale de cette ligne.

Les lignes de GridView se chevauchent: comment adapter la hauteur de ligne à l'élément le plus haut?

5
Chase