Souvent posée, cette question n'a jamais reçu de réponse (du moins pas de manière reproductible).
J'ai une vue d'image avec une image qui est plus petit que la vue. Je souhaite mettre l'image à l'échelle de la largeur de l'écran et ajuster la hauteur de l'ImageView pour refléter la hauteur proportionnelle de l'image.
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
L'image est centrée à sa taille d'origine (plus petite que la largeur de l'écran) avec des marges sur les côtés. Ce n'est pas bon.
J'ai donc ajouté
android:adjustViewBounds="true"
Même effet, rien de bon. J'ai ajouté
android:scaleType="centerInside"
Même effet, rien de bon. J'ai changé centerInside
a fitCenter
. Même effet, rien de bon. J'ai changé centerInside
a centerCrop
.
android:scaleType="centerCrop"
Enfin, l'image est échelonné à la largeur de l'écran - mais décolletée en haut et en bas ! J'ai donc modifié centerCrop
a fitXY
.
android:scaleType="fitXY"
L'image est maintenant adaptée à la largeur de l'écran mais no échelonné sur l'axe des y, ce qui donne une valeur de déformé image.
Suppression android:adjustViewBounds="true"
n'a pas d'effet. L'ajout d'un android:layout_gravity
comme suggéré ailleurs, n'a encore une fois aucun effet.
J'ai essayé d'autres combinaisons, sans succès. Alors, s'il vous plaît, quelqu'un sait-il :
Comment configurer le XML d'un ImageView pour qu'il remplisse la largeur de l'écran, qu'il mette à l'échelle une image plus petite pour qu'elle remplisse la totalité de l'écran et qu'il affiche l'image avec son rapport d'aspect sans distorsion ni recadrage ?
EDIT : J'ai également essayé de définir une hauteur numérique arbitraire. Cela n'a d'effet qu'avec l'option centerCrop
de l'environnement. L'image est déformée verticalement en fonction de la hauteur de vue.