2012-05-31 9 views
28

Ich benutze die getX() und getY() -Methode in einer Ansicht für eine spezielle Drag-Logik (keine Animation, d. H. Ich benutze nie setX/Y-Methoden, ich brauche nur die Getter zu überprüfen).Entsprechendes Android-Workaround für View.getX() vor API 11?

Allerdings habe ich zu der Erkenntnis gelangt, dass diese nur post-API 11.

Die Dokumentation für getX() sagen, dass es die Zugabe des ‚linken‘ Eigenschaft und der 'translationX Eigentum . Alles gut und gut, außer get/setTranslationX() gibt es nur seit API 11 auch.

Ich fragte mich, ob es irgendwelche Kenntnisse darüber, was diese Methode hinter den Kulissen zurückgibt, so könnte ich vielleicht in einen Workaround legen.

Antwort

14

Wie wäre es mit getLeft() und getTop(). Sieht für mich so aus, als wären diese gültig, solange die Ansicht nicht übersetzt wurde (setTranslationX() und setTranslationY()), die in der älteren API ebenfalls nicht gültig sind.

+0

Die Methode 'getTop()' und 'getLeft()', geben nur die Position relativ zu ihrem Eltern, wenn Sie die Position im Bildschirm brauchen, funktioniert es nicht. – Ektos974

+1

Sieht für mich wie getX() und getY() sind auch relativ zu den Eltern, die, was OP offensichtlich gesucht hat. Wenn Sie Bildschirmkoordinaten verwenden möchten, verwenden Sie getLocationOnScreen(). –

16

Verwenden nineOldAndroid.jar Datei in Ihrem Projekt und nutzen diese Art und Weise

import com.nineoldandroids.view.ViewHelper; 


ViewHelper.setTranslationX(myView, translation); 

ViewHelper.getX(myView); 
+0

ViewCompat sollte verwendet werden, da NineOldAndroids veraltet ist und ViewCompat empfohlen wird. Siehe [Robertos Antwort] (http://stackoverflow.com/a/37516278/3124150). – EmmanuelMess

2

Mit android.support.v4.view.ViewCompat die Lösung ist:

ViewCompat.getY(mView); 

die mit alten Android-Geräten kompatibel ist.

Verwandte Themen