ठीक है जो भी जानना चाहता है कि मैंने क्या किया ... मैं नहीं कर सका। मैं एक समाधान सिर्फ जानना चाहता है कि मेरा विशेष दृश्य घटक क्लिक किया गया था किया था, इसलिए मैं केवल इस के साथ समाप्त कर सकते हैं:
if(isPointInsideView(ev.getRawX(), ev.getRawY(), myViewComponent)){
doSomething()
}
और विधि:
/**
* 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;
}
}
हालांकि में जाना जाता है विचारों के लिए यह केवल काम करता है लेआउट जिसे आप पैरामीटर के रूप में पास कर सकते हैं, मैं अभी भी निर्देशांक को जानकर क्लिक किए गए दृश्य को नहीं प्राप्त कर सकता हूं। हालांकि आप लेआउट में सभी विचारों की खोज कर सकते हैं।
निजी बूलियन isPointInsideView {(नाव एक्स, वाई, देखें दृश्य फ्लोट) \t \t रेक्ट रेक्ट = नए रेक्ट(); \t \t view.getDrawingRect (rect); \t \t वापसी rect.contains ((int) x, (int) y); \t} – etienne
सुझाव: महान विधि उम्मीदवार स्थिर बनने के लिए। – m0skit0
@etienne, कृपया ध्यान दें कि getDrawingRect() स्क्रॉल व्यू के अंदर दिखाए गए ड्राइंग रेक्ट के बारे में जानकारी देता है। यह काम नहीं करता है अगर आप किसी ऐसे दृश्य के रेक्ट को प्राप्त करना चाहते हैं जो किसी अन्य दृश्य में घोंसला है। htafoya का समाधान अपेक्षित के रूप में काम करता है। – sulai