2012-05-31 49 views
28

我在視圖上使用getX()和getY()方法來創建一些特殊的拖動邏輯(不是動畫,即我從不使用setX/Y方法,我只需要getters來檢查)。在API 11之前的View.getX()的Android等效解決方案?

不過,我已經認識到,這些只是可供API後11

的信息getX的文檔()說這是它加入了「左」屬性和「translationX」財產。一切都很好,除get/setTranslationX()之外,它只是在API 11之後。

我想知道是否有這方法返回幕後的知識,所以我可能會放在一個解決方法。

回答

14

getLeft()和getTop()如何?在我看來,只要視圖沒有被翻譯(setTranslationX()和setTranslationY()),這些在舊API中也是無效的,這些都是有效的。

+0

'getTop()'和'getLeft()'方法只給出相對於父級的位置,如果你需要屏幕上的位置,它不起作用。 – Ektos974

+1

在我看來,getX()和getY()也與父母相關,顯然,OP是在尋找什麼。如果你想要屏幕座標使用getLocationOnScreen()。 –

16

使用nineOldAndroid.jar文件,並用這種方式

import com.nineoldandroids.view.ViewHelper; 


ViewHelper.setTranslationX(myView, translation); 

ViewHelper.getX(myView); 
+0

應該使用ViewCompat,因爲NineOldAndroids已被棄用,建議使用ViewCompat。參見[Roberto的回答](http://stackoverflow.com/a/37516278/3124150)。 – EmmanuelMess

2

使用android.support.v4.view.ViewCompat的解決辦法是:

ViewCompat.getY(mView); 

它與舊的android設備兼容。

相關問題