Bene per chiunque voglia sapere cosa ho fatto ... non potevo. Ho fatto una soluzione di sapere se la mia specifica componente di vista è stato cliccato, così ho potuto finire solo con questo:
if(isPointInsideView(ev.getRawX(), ev.getRawY(), myViewComponent)){
doSomething()
}
e il metodo:
/**
* Determines if given points are inside view
* @param x - x coordinate of point
* @param y - y coordinate of point
* @param view - view object to compare
* @return true if the points are within view bounds, false otherwise
*/
public static boolean isPointInsideView(float x, float y, View view){
int location[] = new int[2];
view.getLocationOnScreen(location);
int viewX = location[0];
int viewY = location[1];
//point is inside view bounds
if((x > viewX && x < (viewX + view.getWidth())) &&
(y > viewY && y < (viewY + view.getHeight()))){
return true;
} else {
return false;
}
}
Tuttavia questo funziona solo per osservazioni nel layout che puoi passare come parametro, non riesco ancora a ottenere la vista cliccata conoscendo le coordinate. Puoi comunque cercare tutte le viste nel layout.
privato booleano isPointInsideView (float x, float y, Panorama vista) { \t \t Rect rect = new Rect(); \t \t view.getDrawingRect (rect); \t \t return rect.contains ((int) x, (int) y); \t} – etienne
Suggerimento: ottimo metodo candidato per essere reso statico. – m0skit0
@etienne, si noti che getDrawingRect() restituisce informazioni sul disegno rect mostrato all'interno di una vista di scorrimento. Non funziona se vuoi ottenere il rect di una vista che è annidata in un'altra vista. La soluzione di htafoya funziona come previsto. – sulai