J'ai une ImageView qui est définie de la manière suivante:
<ImageView
Android:id="@+id/cover_view"
Android:layout_width="wrap_content"
Android:layout_height="match_parent"
Android:layout_below="@id/title"
Android:layout_above="@id/divider"
Android:adjustViewBounds="true"
Android:src="@drawable/image_placeholder"
Android:scaleType="fitStart"/>
Maintenant, après avoir téléchargé un nouveau bitmap, je change le dessinable. L'image apparaît maintenant dans le coin supérieur gauche de l'ImageView. Existe-t-il un moyen pour que l'image remplisse toute la hauteur possible, puis ajuste la largeur de la vue pour permettre la mise à l'échelle de l'image sans modifier le rapport d'aspect?
L'image remplit tout l'espace sur un écran standard mais sur une résolution WVGA, l'image ne prend qu'environ la moitié de la hauteur réelle de l'ImageView.
Fondamentalement, la réponse ici est qu'il n'y a pas de valeur prédéfinie pour ce que vous essayez d'atteindre. La solution est de créer un Matrix
qui correspond à vos besoins et d'appeler setImageMatrix(matrix)
sur votre ImageView
.
Si je vous comprends bien, ce que vous devez utiliser est le centerCrop
scaleType. fitStart
met l'image à l'échelle proportionnellement, mais ni la largeur ni la hauteur ne dépasseront la taille de la vue, et l'image aura, comme vous l'avez dit, un top|left
la gravité.
L'utilisation de centerCrop
met l'échelle à l'échelle proportionnellement, mais fait en sorte que le bord le plus court de l'image corresponde à la taille de la vue, et s'il existe des données supplémentaires sur le côté long qui ne correspondent pas, elles sont simplement rognées. La gravité est, bien sûr, center
. Ce qui suit a fonctionné pour moi:
<ImageView
Android:src="@drawable/image_placeholder"
Android:id="@+id/cover_view"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:scaleType="centerCrop"
/>
Vous pouvez changer le type d'échelle en fitXY via l'appel à
imageView.setScaleType(ScaleType.FIT_XY);
faites-le simplement en xml comme
Android:scaleType="fitXY"