我能得到一个视图的x和y位置相对于我在Android中的活动的根布局吗?
发布于 2010-09-02 02:30:27
这是一种解决方案,但由于API会随着时间的推移而变化,因此可能会有其他方法来实现这一点,请确保检查其他答案。一种声称更快,另一种声称更容易。
private int getRelativeLeft(View myView) {
if (myView.getParent() == myView.getRootView())
return myView.getLeft();
else
return myView.getLeft() + getRelativeLeft((View) myView.getParent());
}
private int getRelativeTop(View myView) {
if (myView.getParent() == myView.getRootView())
return myView.getTop();
else
return myView.getTop() + getRelativeTop((View) myView.getParent());
}
如果有效的话,请告诉我。
它应该递归地将每个父容器的顶部和左侧位置相加。如果你愿意,你也可以用Point
来实现它。
发布于 2016-04-20 18:00:10
Android API已经提供了一种方法来实现这一点。试试这个:
Rect offsetViewBounds = new Rect();
//returns the visible bounds
childView.getDrawingRect(offsetViewBounds);
// calculates the relative coordinates to the parent
parentViewGroup.offsetDescendantRectToMyCoords(childView, offsetViewBounds);
int relativeTop = offsetViewBounds.top;
int relativeLeft = offsetViewBounds.left;
这是doc
发布于 2011-07-23 11:46:29
请使用view.getLocationOnScreen(int[] location);
(请参阅Javadocs)。答案在整数数组中(x = location[0]
和y= location[1]
)。
https://stackoverflow.com/questions/3619693
复制相似问题