/**
* m_scrollview代表父视图
* @param descendant 子视图
* @return
*/
public int getRootHeight(View descendant) {
int[] coord = new int[2];
float[] pt = {coord[0], coord[1]};
//转换为直接父窗口的坐标
pt[0] += descendant.getLeft();
pt[1] += descendant.getTop();
ViewParent viewParent = descendant.getParent();
//循环获得父窗口的父窗口,并且依次计算在每个父窗口中的坐标
while (viewParent instanceof View && viewParent != m_scrollview) {
final View view = (View) viewParent;
//转换为相当于可视区左上角的坐标,scrollX,scollY是去掉滚动的影响
pt[0] += view.getLeft() - view.getScrollX();
pt[1] += view.getTop() - view.getScrollY();
viewParent = view.getParent();
}
coord[0] = (int) Math.round(pt[0]);
coord[1] = (int) Math.round(pt[1]);
System.out.println("coord[0]:" + coord[0]);
System.out.println("coord[1]:" + coord[1]);
return coord[1];
}