4

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

4

2 回答 2

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()
}

编辑(kcoppock):在 for 循环中,我会做这样的事情:

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();
于 2012-07-12T14:47:20.837 回答
1

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

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

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

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

  4. 看看你的像素坐标是否在这个矩形内

于 2012-07-12T14:38:23.917 回答