坐标视图的ID

时间:2012-07-12 14:23:34

标签: android view coordinate

在给定的像素位置,有一个视图。我有像素的坐标。如何在给定坐标处找到视图的id?

2 个答案:

答案 0 :(得分:3)

如果你在ViewGroup内:

int count = viewgroup.getChildCount();
for (int i = 0; i < count; i++)
{
   View view = viewgroup.getChildAt(i);
   if (view.getX() == theX && view.getY() == theY)
          return view.getId()
}
在for循环中,

编辑(kcoppock):,我会做这样的事情:

View view = viewgroup.getChildAt(i);
if(!view.getVisibility() == View.VISIBLE) continue;
int[] location = {0, 0};
view.getLocationOnScreen(location);
int right = location[0] + view.getWidth();
int bottom = location[1] + view.getHeight();
Rect bounds = new Rect(location[0], location[1], right, bottom);
if(bounds.contains(coordinatesX, coordinatesY)) return view.getId();

答案 1 :(得分:1)

我认为这样的事情应该有效:

  1. 走视图层次结构以查找可见的子视图(即没有子视图的视图)。

  2. 在视图上使用View.getLocationOnScreen()来检索它们的位置(顶部/左侧窗口坐标)

  3. 使用getMeasuredWidth()/ getMeasuredHeight()获取视图宽度和高度

  4. 查看您的像素坐标是否属于此矩形