Trouver la position réelle d'une ImageView
Je voudrais trouver la position réelle d'un ImageView
drawable. Actuellement, elle renvoie la valeur 0, car le ImageView
est redimensionnée par une relative mise en page. Mais le drawable à l'intérieur de l'affichage de l'image n'est pas de remplir toutes dans le rapport de mise en page. Il remplit toute la largeur, et il est centré verticalement avec l'espace vide en haut et en bas.
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relative_layout_main"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center"
>
<ImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:src="@drawable/drawable"/>
</RelativeLayout>
Veuillez voir la capture d'écran jointe. Je suis à la recherche pour les x et y du rectangle rouge et la largeur, de la hauteur de.
U ne essayer de l'imageView.getDrawable().getBounds(). gauche /droite/bas/haut de la valeur ..??
Il retourne 0,0 ou de la position des parents
si son match parent largeur et la mère est la pleine largeur de l'écran, le départ sera 0 0..??
Il retourne 0,0 ou de la position des parents
si son match parent largeur et la mère est la pleine largeur de l'écran, le départ sera 0 0..??
OriginalL'auteur pepe-pa | 2014-02-26
Vous devez vous connecter pour publier un commentaire.
Vous devez attendre jusqu'à ce que les points de Vue ont été mesurés. Vous pouvez utiliser un
OnGlobalLayoutListener
.Parce que votre
ImageView
remplit la totalité de l'écran, il sera probablement donner à l'appareil une largeur de largeur, et la hauteur de la fenêtre en hauteur. Pour obtenir la largeur et la hauteur de l'image à l'intérieur de laImageView
, définir laRelativeLayout
hauteur dematch_parent
et définir laImageView
hauteur dewrap_content
, et de définir laImageView
'slayout_gavity
àcenter_vertical
.Désolé il retourne mauvaises valeurs de gauche est bien parce que c'est 0, mais le sommet a une mauvaise valeur
Ce n'retour haut?
près de 200 pour 3 images, mais il devrait être de plus de 400
Si vous voulez le haut de la drawable à l'intérieur de l'ImageView, vous pouvez l'appeler: imageView.getDrawable().getBounds().haut à obtenir par rapport supérieur, ou de l'imageView.getTop() + imageView.getDrawable().getBounds().top pour top absolu, après que vous avez attendu pour le point de vue d'être mis hors de cours.
OriginalL'auteur Mark Buikema
Je pense que j'ai la solution:
Vous devez surcharger la méthode onWindowFocusChanged de l'activité où vous êtes
pour être sûr que les points de vue ont été gonflés:
Quand ce termine, dans la gamme grandeur, vous aurez les coordonnées correctes, je l'espère.
PS: l'image est votre ImageView.
OriginalL'auteur Sergio Borné
Essayez ceci: Ici drawLeft est X valeur et drawTop est Y valeur.
Vous pouvez obtenir le hauteur = drawBottom - drawTop et width = drawRight - drawLeft .
Espère que cela va vous aider.
OriginalL'auteur Zusee Weekin
essayez ceci :
//ce code va vous renvoyer les coordonnées de l'image sur l'écran chaque fois que vous voulez
OriginalL'auteur Vijju
Vous devez appeler le
getTranslationX()
etgetTranslationY()
méthodes pour obtenir les coordonnées de votre point de vue. et Si ces méthodes retournent des vous 0 valeurs, attacher un gestionnaire de clic dans la vue qui vous intéresse , et à l'intérieur de la onClick appeler les méthodes ci-dessus et aussi getWidth, et getHeight.Votre réponse renvoie toujours 0,0
et que dire de la getWidth et hetHeight méthodes? Quels sont-ils de retour si vous les appelez à l'intérieur de l'auditeur?
getWidth et getHeight après @Mark Buikema commentaire renvoie correctement les valeurs, mais encore j'ai besoin de x et y
OriginalL'auteur karvoynistas
La question est: Que voulez-vous atteindre? (Je veux dire, pourquoi avez-vous besoin pour obtenir le vide de l'espace à l'avant?)
Votre
ImageView
est redimensionné pour remplir le parent, c'est pourquoi vous obtenez0
de la recommondations. Si votreImageView
doit être aussi grand que l'image. Changer la hauteur de vosImageview
àwrap_content
et dites à votre image à redimensionner la plus grande possible. Si je n'ai pas fait une erreur, votreRelativeLayout
doit être vert et vous devriez voir votre Image dans le centre (si l'Image est plus petite queparent_width
, que vous devriez voir le fond rouge à gauche et à droite).Et maintenant, vous devriez obtenir votre
ImageView
position de @Neha suggéréOriginalL'auteur longilong
Essayez d'ajouter un bouton et cliquez sur le bouton. À l'intérieur onclick() permet d'obtenir l'imageView de la hauteur et de la largeur. Chaque fois que vous obtenez zéro parce que vous n'avez pas fait quelque chose avec l'écran. Au moins vous avez passer de certains événements et la poignée de l'événement.
OriginalL'auteur Shriram