API 11之前Android中View.getX()的等效替代方法是什么?

28

我在使用一个视图上的getX()和getY()方法进行一些特殊的拖动逻辑(不是动画,即我从未使用setX/Y方法,只需要这些getter来检查)。

然而,我已经意识到这些方法只在API 11之后可用。

getX()的文档中说它是'left'属性和'translationX'属性的总和。这很好,但是get/setTranslationX()也仅自API 11以来才存在。

我想知道这个方法在幕后返回了什么,以便我可以尝试解决问题。

4个回答

16

在您的项目中使用nineOldAndroid.jar文件,并使用以下方法

import com.nineoldandroids.view.ViewHelper;


ViewHelper.setTranslationX(myView, translation);

ViewHelper.getX(myView);

ViewCompat应该被用作NineOldAndroids已经过时,而且建议使用ViewCompat。详见Roberto的答案 - EmmanuelMess

14

getLeft()和getTop()怎么样?在视图没有被平移(setTranslationX()和setTranslationY())的情况下,它们看起来是有效的,而这些在旧的API中也是无效的。


方法 getTop()getLeft() 只返回相对于其父级的位置,如果你需要在屏幕上的位置,这种方法无法工作。 - Ektos974
1
在我看来,getX()和getY()也是相对于父级的,显然这就是OP想要的。如果您想要屏幕坐标,请使用getLocationOnScreen()。 - Doug Gerecht

3
使用android.support.v4.view.ViewCompat,解决方案如下:
ViewCompat.getY(mView);

这个功能与老旧的Android设备兼容。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接