ImageView remplit parent largeur OU de la hauteur, mais maintient le ratio d'aspect
J'ai une image carrée (bien que ce problème s'applique également à des images rectangulaires). Je veux afficher l'image la plus grande possible, les étirements, si nécessaire, pour remplir leurs parents, tout en continuant à maintenir le ratio d'aspect. L'image est plus petite que l'ImageView. Le problème est, je ne peux pas étirer l'image et de "correspondance", la hauteur et la largeur de l'ImageView.
C'est mon XML fichier de mise en page:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<ImageView android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:layout_marginTop="10dp"/>
<TextView android:id="@+id/name"
android:layout_below="@id/image"
android:layout_alignLeft="@id/image"
android:layout_marginTop="20dp"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="18dp"/>
<TextView android:id="@+id/name2"
android:layout_below="@id/name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="14dp"/>
</RelativeLayout>
J'ai utilisé de nombreuses combinaisons de fill_parent
, wrap_content
avec plusieurs scaleTypes: fitCenter
, fitStart
, fitEnd
, centerInside
, et ils ont tous dessiner les images dans le bon ratio d'aspect, mais aucun d'entre eux à l'échelle les images et les ImageView lui-même, résultant dans le TextViews obtenir poussé tout le chemin vers le bas de l'écran, les espaces vides à l'intérieur de l'ImageView, image non mis à l'échelle, ou de l'image recadrée.
Je ne trouve pas la bonne combinaison pour cela.
- essayez la réponse donnée ici: stackoverflow.com/questions/5355130/...
- J'ai déjà mis
adjustViewBounds=true
. De toute façon il n'a pas de redimensionner le ImageView limites. - Avez-vous une seule image ou de plusieurs? Avez-vous pensé à utiliser un
ScrollView
? Est votre hauteur de l'image plus grande que la hauteur de l'écran? Si oui, comment voulez-vous votre mise en page pour regarder? VotreTextView
name
, est-il censé être à gauche ou au-dessous de l'image? Si vous souhaitez que tous les 3 points de vue pour s'adapter à votre écran, ils devraient tous avoirandroid:layout_height="wrap_content"
. - J'ai plusieurs, mais je suis l'affichage d'une image. Je devrais avoir formulé cette question mieux. C'est l'affichage d'une image.
- Avez-vous essayé
android:scaleType="fitXY"
? Il étire l'image pour correspondre à la largeur et la hauteur que vous attribuez (j'.e, il ne respecte pas le ratio d'aspect). - double possible de ImageView adjustViewBounds ne fonctionne pas
- vous pouvez essayer cette réponse: stackoverflow.com/questions/5554682/...
Vous devez vous connecter pour publier un commentaire.
Ces:
devrais redimensionner l'image et de modifier la taille de l'limites pour s'adapter à la nouvelle taille de l'image. Si elle ne le fait pas sur votre appareil afficher l'image que vous utilisez et ce que l'appareil vous sont à l'essai sur.
Utiliser ce code :
android:scaleType="fitXY"
Pour plus de détails à propos de l'image mise à l'échelle, regardez ce que fait un signe dans cet article ici
Résumé:
center
centerCrop
centerInside
fitCenter
fitEnd
fitStart
fitXY
matrix
plus de détails ici nouvel article
Utiliser ce code avec vue paramètres de mise en page comme wrapcontent
android:adjustViewBounds="true"
Espère que cela fonctionnera.
Ce code xml va fonctionner!. Si vous spécifiez que votre apps largeur est toujours la même que la fenêtre, puis la
android:adjustViewBounds="true"
permettra de régler la hauteur correspondant à la ration de l'image.J'ai eu le même problème, android:adjustViewBounds pas fait son travail et d'avoir un rembourrage en haut de l'image. Dans une relative mise en page qui avait match_parent valeurs pour la largeur et la hauteur, j'ai eu:
J'ai changé la disposition Relative à un Linéaire de la mise en page avec wrap_content valeurs pour la largeur et la hauteur, et maintenant c'est ok:
Avez-vous essayez de le régler programmaticaly? Je pense que cela fonctionne vraiment bien si vous calculez la hauteur de votre
TextView
s et régler la hauteur et la largeur de l'image en fonction sur ce.Ensemble
android:layout_height="wrap_content"
dans imageview.Créer une image avec une largeur égale à la largeur de l'écran, et la hauteur proportionnellement définir en fonction de l'aspect ratio, procédez de la manière suivante. Ici, je mentionne la façon de charger l'image à imageview à partir de l'url.
Espère que cette aide.