Getting View's coordinates relative to the root layout


Can I get a View's x and y position relative to the root layout of my Activity in Android?

11/29/2013 12:54:03 PM

Accepted Answer

This is one solution, though since APIs change over time and there may be other ways of doing it, make sure to check the other answers. One claims to be faster, and another claims to be easier.

private int getRelativeLeft(View myView) {
    if (myView.getParent() == myView.getRootView())
        return myView.getLeft();
        return myView.getLeft() + getRelativeLeft((View) myView.getParent());

private int getRelativeTop(View myView) {
    if (myView.getParent() == myView.getRootView())
        return myView.getTop();
        return myView.getTop() + getRelativeTop((View) myView.getParent());

Let me know if that works.

It should recursively just add the top and left positions from each parent container. You could also implement it with a Point if you wanted.

11/15/2013 7:08:51 PM

The Android API already provides a method to achieve that. Try this:

Rect offsetViewBounds = new Rect();
//returns the visible bounds
// calculates the relative coordinates to the parent
parentViewGroup.offsetDescendantRectToMyCoords(childView, offsetViewBounds); 

int relativeTop =;
int relativeLeft = offsetViewBounds.left;

Here is the doc

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow