Étirer l'image pour l'ajuster
La src
devrait s'étirer sa largeur à match_parent
tout en gardant l'aspect ratio. Lorsque l'image est plus grande que le parent, il évolue vers le bas correctement. Mais quand l'image est plus petite, elle, ne l'est pas. (l'illustration montre le comportement désiré).
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/banner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
android:src="@drawable/foo"
/>
</RelativeLayout>
À l'aide de ScaleType.fitXY
s'étend le width
seulement
source d'informationauteur Matt
Vous devez vous connecter pour publier un commentaire.
Je crois que c'est pas possible, du moins pas avec les options offertes par
scaleType
attribut.Votre meilleure option dans ce cas est d'utiliser
centerCrop
, mais seulement le centre de l'image sera visible.Toutefois, si vous n'êtes pas ok avec cette option, vous pouvez redimensionner l'image par programmation sans perdre l'aspect ratio.
Pour ce faire, vous aurez besoin de calculer un facteur d'échelle basée sur la largeur de l'écran, puis d'utiliser ce facteur d'échelle pour connaître la nouvelle hauteur de l'image.
Comme ceci:
Aussi, vous aurez besoin d'ajuster la déclaration de
ImageView
dans la mise en page du fichier:DISPOSITION
android:adjustViewBounds="true"
fait le travail!utiliser cette
MainImage.setScaleType(ImageView.ScaleType.FIT_XY);
OU vous pouvez simplement ajouter
android:scaleType="fitXY"
en xml.J'ai l'habitude d'utiliser la classe suivante dans le fichier XML lorsque je veux ce comportement:
Bien sûr, je le tordre parfois selon certaines exigences. Mais je trouve plus facile de changer la classe de ImageView à une classe différente en XML au lieu de code java dans le contexte de la vue.
Combinant les deux brillantes réponses (cette une et cette une) dans une solution rapide. J'espère que cela sauve quelqu'un d'inutile, de temps de recherche!
L'utiliser comme ceci:
Essayer
android:scaleType="CENTER_INSIDE"
Android docs ici
N':
Pas faire ce que vous voulez?