Comment obtenir la hauteur de l'article de recyclerview dans "onBindViewHolder"
La hauteur de RecyclerView de l'élément est pas fixe,j'ai besoin de définir l'image d'arrière-plan pour chaque article,je tiens donc à obtenir la hauteur de recyclerview de l'élément pour redimensionner l'Image,mais le itemView.getHeight()
retourne toujours 0 dans onBindViewHolder
.
J'ai essayer de chercher de nombreuses questions ou des articles,mais je ne peux pas obtenir un bon soluation.
source d'informationauteur zys
Vous devez vous connecter pour publier un commentaire.
Court
Mesure le point de Vue manuellement
et obtenir la hauteur avec
view.getMeasuredHeight()
Fond
Une vue retourne une valeur valide pour
View.getHeight()
seulement après qu'il a été mesuré. La mesure elle-même se déclencheront automatiquement par le système lorsque la vue est sur le point d'être affiché sur l'écran.Quand Android veut afficher la mise en page, il récursive appelez le
view.layout()
fonction pour chaque affichage dans la vue d'arborescence. Chaque Parent dit à ses enfants les contraintes qu'ils pourraient avoir (largeur/hauteur) et demandez-leur deview.measure()
eux-mêmes. Comme un résultat, l'affichage va stocker les valeurs mesurées en FONCTION sur les contraintes dans la désignation des membres (measuredheight dans/Largeur). Notez qu'à ce stadeview.getMeasuredHeight()
contiendra la valeur tout enview.getHeight()
sera toujours valide.view.getHeight()
ne retournera une valeur valide une fois le point de vue a une hauteur réelle dans l'INTERFACE utilisateur de la hiérarchie.Récapitulatif
Donc, pour connaître la hauteur d'un élément de vue, avant il a été mesuré et mis en page par le système, nous avons besoin d'invoquer la
view.measure()
fonction manuellement.La mesure de la fonction attend 2 paramètres qui découlent de la vue LayoutParams + le parent contraintes.
Dans le code ci-dessus de l'échantillon, on mesure le point de vue de forcer sa largeur à EXACTEMENT la largeur de la société mère (le RecycleView), et la hauteur n'est pas limitée.
Je vous suggère de définir plusieurs fichiers de mise en page avec les hauteurs et les gonfler en fonction de certains critères dans votre jeu de données.
ou comme réponse à ici: vous pouvez obtenir les mesures lors de l'initialisation de la vue titulaire
Comment à ce sujet: