首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取视图相对于根布局的坐标

获取视图相对于根布局的坐标
EN

Stack Overflow用户
提问于 2010-09-01 23:28:00
回答 9查看 170.8K关注 0票数 150

我能得到一个视图的x和y位置相对于我在Android中的活动的根布局吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-09-02 02:30:27

这是一种解决方案,但由于API会随着时间的推移而变化,因此可能会有其他方法来实现这一点,请确保检查其他答案。一种声称更快,另一种声称更容易。

代码语言:javascript
复制
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来实现它。

票数 145
EN

Stack Overflow用户

发布于 2016-04-20 18:00:10

Android API已经提供了一种方法来实现这一点。试试这个:

代码语言:javascript
复制
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

票数 197
EN

Stack Overflow用户

发布于 2011-07-23 11:46:29

请使用view.getLocationOnScreen(int[] location); (请参阅Javadocs)。答案在整数数组中(x = location[0]和y= location[1])。

票数 95
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3619693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档