Le positionnement d'une image à l'intérieur d'une ImageView avec max hauteur et la largeur maximale est de définir
J'ai un ImageView
avec max hauteur et la largeur maximale est définie à la fois à 100
. La figure ci-dessous n'est clairement pas un carré, mais vous pouvez utiliser votre imagination 😉
Figure 1:
╔══════════════════════════════════════════════╗
║ ImageView ╔══════════════╗ ║
║ ║ ║ ║
║ ║ Actual image ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ║ ║ ║
║ ╚══════════════╝ ║
╚══════════════════════════════════════════════╝
De toute façon, Si j'essaie de régler un BitMap
à la ImageView
qui n'ont pas un ratio de 1:1, l'image est positionné comme illustré dans la Figure 1. Ce que je veux, c'est que pour l'image que pour être placé à gauche à l'intérieur de la ImageView
comme illustré dans la Figure 2 ci-dessous.
Figure 2:
╔══════════════════════════════════════════════╗
║══════════════╗ ║
║ ║ ║
║ Actual image ║ ║
║ ║ ║
║ ║ ║
║ ║ ║
║══════════════╝ ║
╚══════════════════════════════════════════════╝
Vous pouvez voir mon ImageView en XML ci-dessous. maxHeight
, maxWidth
et adjustViewBounds
sont définies au cours de l'exécution.
<ImageView android:id="@+id/someImage"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textName"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingRight="4dp"
/>
C'est dans un RelativeLayout
si cela fait une différence.
OriginalL'auteur wtf | 2010-05-04
Vous devez vous connecter pour publier un commentaire.
essayer cette
Il aide pour moi.
OriginalL'auteur ihrupin
Par défaut, le scaleType est "fitCenter" /ScaleType.FIT_CENTER comme dans votre première esquisse.
Pour aligner le drawable à la gauche de l'ImageView, comme indiqué dans votre deuxième schéma:
dans la vue xml:
ou dans la classe Java:
Pour aligner le drawable à la droit de l'ImageView
dans la vue xml:
ou dans la classe Java:
OriginalL'auteur matt
Pourquoi ne pas simplement ajouter un drawableLeft à votre Vue.
Comme ceci (dans votre layout.xml): android:drawableLeft="@drawable/yourDrawableId"
-ou-
comme ceci (dans du code Java): yourView.setCompoundDrawablesWithIntrinsicbounds(yourDrawableId,0, 0,0);
Vous pouvez contrôler le remplissage, etc de cette dessiné à l'intérieur de votre point de Vue conteneur (pour contrôle à grain fin de mise en page des réglages).
OriginalL'auteur Booger
J'ai connu le même problème et c'est comment je l'ai résolu:
J'ai fini par mettre l'ImageView à l'intérieur d'un RelativeLayout qui est aussi grand que l'ImageView et de définir la gravité de la Disposition Relative à ce que je voulais (à gauche dans votre cas).
J'ai aussi mis adjustViewBounds vrai, alors le ImageView est aussi grand que l'Image et est positionné à l'intérieur de la Relative Mise en page.
Pas une solution élégante, mais il fonctionne...
OriginalL'auteur Display name
J'utilise:
documenté ici. Bonne chance!
EDIT: Mon mal, je ne savais pas que vous étiez de centrage d'une image dans une ImageView (ma première lecture, j'ai pensé que vous aviez de la difficulté à centrage la ImageView dans un autre point de Vue). Maintenant, je ne suis pas si sûr, mais vous pouvez regarder ScaleType de toute façon ^_-
OriginalL'auteur pablo.meier
Essayer
La gravité est la façon dont une vue des positions de son contenu. Fonctionne sur TextView pour le texte et probablement ImageView pour l'image.
Edit:
Essayez de faire un FrameLayout qui contient de l'ImageView. Définir l'ImageView largeur et la hauteur de "wrap_content" et de définir la gravité de la mère à "gauche".
Autrement, de mettre en œuvre onDraw dans une Vue et de dessiner l'image à la position que vous voulez.
OriginalL'auteur drawnonward
Quelque chose n'est pas droite. Votre ImageView est défini avec
wrap_content
pour seslayout_width
etlayout_height
dans le fichier XML, il est préférable de n'occuper le même espace que votre image bitmap.Essayez d'ajouter un
android:background
pour votre ImageView de voir que c'est vraiment plus large que votre image bitmap et a causé le non désirés de centrage:Tester avec quelques images qui a en arrière-plan transparent de couleur pour qu'on puisse voir le fond rouge de l'ImageView. J'attends qu'il affiche un grand rectangle, si votre image source est grand et un large rectangle si l'image est grande. Vous ne verrez un carré si votre image source est carré. On ne devrait jamais voir la Figure 1 de votre question.
Peut-être que vous voulez avoir votre ImageView ont toujours une dimension 100x100 à tout moment à la place? Ensuite, vous pouvez utiliser le code suivant (notez le
fitStart
pour lascaleType
attribut comme correctement mentionné par d'autres, déjà):Il n'est pas nécessaire de définir
maxHeight
,maxWidth
etadjustViewBounds
à partir du code Java si c'est ce que vous voulez.OriginalL'auteur Joe