在给定的像素位置,有一个视图。我有像素的坐标。如何在给定坐标处找到视图的id?
答案 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)
我认为这样的事情应该有效:
走视图层次结构以查找可见的子视图(即没有子视图的视图)。
在视图上使用View.getLocationOnScreen()来检索它们的位置(顶部/左侧窗口坐标)
使用getMeasuredWidth()/ getMeasuredHeight()获取视图宽度和高度
查看您的像素坐标是否属于此矩形