在android中查找给定的x / y坐标

是否有可能find显示在给定绝对x / y像素坐标的视图?

编辑:我find了一个合适的解决scheme,效果很好:

private View findViewByCoord(float x, float y){ TextView textView = null; int[] location = new int[2]; int width = 0; int height = 0; for(int reference : cardReference){ textView = (TextView) findViewById(reference); textView.getLocationOnScreen(location); width = textView.getWidth(); height = textView.getHeight(); if(location[0] <= x && x <= (location[0] + width) && location[1] <= y && y <= (location[1] + height)){ Log.i("Test", "Card " + textView.getText() + " is pointed"); return textView; } } return null; } 

其中cardReference是一个整数数组资源(在我的情况下20个TextViews排列在一个4 x 5matrix):

 int[] cardReference = new int[]{R.id.card1_1, R.id.card1_2, R.id.card1_3, R.id.card1_4, R.id.card2_1, R.id.card2_2, R.id.card2_3, R.id.card2_4, R.id.card3_1, R.id.card3_2, R.id.card3_3, R.id.card3_4, R.id.card4_1, R.id.card4_2, R.id.card4_3, R.id.card4_4, R.id.card5_1, R.id.card5_2, R.id.card5_3, R.id.card5_4}; 

为了加速性能,我会考虑使用一个TextViews数组,然后在每个循环中调用findViewById()。

Related of "在android中查找给定的x / y坐标"

一个“解决scheme”将是循环通过父视图的孩子,并根据您select的X和Y坐标检查getLeft()getTop()坐标。 如果有一场比赛,你有你的看法。

我想听听其他的select。

编辑:你还必须计算视图的高度/宽度,以及给定的左侧和顶部坐标,看看你的坐标是否在该范围内。