MotionEvent GetY() und getX() falsche Werte zurückgeben
Habe ich folgende situation:
Habe ich eine custom ListView mit Bildansicht und TextView in einer Reihe.
Die Bildansicht hat einen onTouchListener, wchich ruft meine onTouch-Methode. Hier sind einige Zeilen von ihm:
if (event.getAction()==MotionEvent.ACTION_MOVE) {
layout.leftMargin = (int) event.getX() - dragIcon.getWidth()/2;
layout.topMargin = (int) event.getY() - dragIcon.getHeight()/2;
//Log.d("Tag", "Pozycja: " + event.getX() +", "+ event.getY());
}
dragIcon.setLayoutParams(layout);
Wenn Bewegung erkannt wird, zeige ich das neue Bild (nicht das in der ListView) und ich fange an, verschieben Sie es nach x-und y-Koordinaten.
Das problem ist, dass getX und getY Rückkehr Positionen relativ zur Bildansicht in der Liste, nicht die ganze ListView-Steuerelement (ich glaube so). Also, wenn ich Tippen Sie auf ein Element in der Mitte und streichen Sie den finger, dann getY gibt negative Werte (über Bildansicht Grenze).
Hoffe, ich erklärte klar..
Irgendwelche Ideen, wie man diese Koordinaten relativ zum Bildschirm Größe?
Danke.
InformationsquelleAutor der Frage glodos | 2011-06-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie es mit
getRawX()
undgetRawY()
stattgetX()
undgetY()
.InformationsquelleAutor der Antwort kcoppock
getX() und getY() gibt die Werte an den jeweiligen Ansichten, hieß es weiter.
Daher
Lassen Sie uns sagen,
Dann kann man x,y mit
Hier, ich nehme an, Sie haben den onTouchListener auf imV.
InformationsquelleAutor der Antwort Debanjan