Идентификатор вида по координате

В заданном местоположении пикселя есть представление. У меня есть координаты пикселя. Как найти идентификатор представления при заданной координате?

Если вы находитесь внутри 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() } 

EDIT (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(); 

Я думаю, что что-то вроде этого должно работать:

  1. Пройдите иерархию просмотров, чтобы найти дочерние представления (т. Е. Те, у которых нет суб-представлений), которые являются видимыми.

  2. Используйте View.getLocationOnScreen () для просмотра своего местоположения (координата верхнего и левого окна)

  3. Используйте getMeasuredWidth () / getMeasuredHeight (), чтобы получить ширину и высоту представления

  4. См., Если ваша координата пикселя попадает в этот прямоугольник

Intereting Posts
Как отключить сообщение тоста для тостов, которое иногда появляется с помощью элементов управления масштабированием в WebView? Как разместить текст по горизонтали и вертикали в TextView на Android? Структура данных, используемая для сообщений SMS в Android Как узнать, когда раскрывается меню панели действий? Что вы не можете сделать на VM Dalvik (виртуальная машина Android), которую вы можете использовать в Sun VM? Каково местоположение базы данных по умолчанию для приложения Android для некорневого устройства? Это то же самое, что и для корней? Android – FATAL EXCEPTION: main – Невозможно запустить Activity ComponentInfo OnDragListener – есть ли библиотека совместимости для уровней Android <11? Как изменить тему из другого ресурса приложения в Android? Как я могу добавить файлы .so в проект библиотеки андроидов, используя gradle 0.7+ Android studio + Gradle + Android Аннотации CUDA с opencv для Android Как сравнить системную дату с mydate в android 2.1? Можно ли использовать Mozilla Persona (BrowserID) с мобильными приложениями? Android: id, что является плюсом для