2014-06-04 9 views
6

में एक और दृश्य मैं दो विचारों के अंदर के साथ एक RelativeLayout है। व्यू 1 लेआउट के अंदर प्रत्येक दस सेकंड में एक यादृच्छिक स्थिति में बनाया गया है। view2 स्थिर स्थिति में है और बड़ा है तो देखें 1। मैं जानना चाहता हूं कि दूसरे दृश्य क्षेत्र के अंदर पहला दृश्य कब बनाया गया है, मैं यह कैसे कर सकता हूं?एंड्रॉयड - कैसे जानना चाहते हैं कि एक दृश्य ओवरले RelativeLayout

मैं वर्तमान में इस कोड को आजमा रहा हूं लेकिन आईडी अच्छी तरह से काम नहीं कर रही है।

 if (paramsView1.topMargin > View2Ystart 
      && paramsView1.topMargin < View2Yend 
      && paramsView1.leftMargin > View2Xstart 
      && paramsView1.leftMargin < View2Xend) { 
     return true 
    } 
    else 
     return false; 

यह केवल तभी सच होता है जब view1 view2 के पक्ष को छू रहा हो। मैं चाहता हूं कि यह केवल तभी सच हो जाए जब व्यू 1 पूरी तरह से व्यू 2 के अंदर है।

+0

आप निर्देशांक और प्रत्येक दृश्य के आयाम मिलता है और अगर वहाँ ओवरलैप है निर्धारित करने के लिए गणित कर सकते हैं। – zgc7009

+0

मैं वर्तमान में ऐसा करने की कोशिश कर रहा हूं लेकिन सफलता के बिना। मैं अपने सवाल का कुछ कोड अगर v1, नहीं अगर यह overlaps v2 के भीतर है, लेकिन यह विचार है – TheModularMind

उत्तर

12

आपको getLeft(), getRight(), getTop() और getBottom() का उपयोग करना चाहिए।

if (v1.getTop() >= v2.getTop() && 
    v1.getLeft() >= v2.getLeft() && 
    v1.getRight() <= v2.getRight() && 
    v1.getBottom() <= v2.getBottom()) { ... 

ध्यान में रखना है कि इन मूल्यों को उपलब्ध जब जनक खर्च की गई थी, अर्थात addView() के तुरंत बाद नहीं किया जाएगा।

एक अन्य संभावित समाधान है, जो और अधिक लचीला हो सकता है, प्रत्येक दृश्य के निर्देशांक, उदा Rect उदाहरणों का निर्माण करना है

Rect rect1 = new Rect(v1.getLeft(), v1.getTop(), v1.getRight(), v1.getBottom()); 
Rect rect2 = new Rect(v2.getLeft(), v2.getTop(), v2.getRight(), v2.getBottom()); 

तो फिर तुम rect1.contains(rect2) या Rect.intersects(rect1, rect2) या किसी अन्य संयोजन का उपयोग कर सकते हैं।

+0

ऊपर बयान केवल सच है जोड़ा। – zgc7009

+0

@ zgc7009 प्रश्न निर्दिष्ट करता है "मैं यह सच रिटर्न केवल तभी View1 _totally_ अंदर view2 है चाहता हूँ।" – matiash

+0

मुझे लगता है कि उन्होंने संपादन में आखिरी पंक्ति जोड़ दी है, उस स्थिति में यह ठीक काम करता है। – zgc7009

संबंधित मुद्दे