मैं कस्टम ViewGroup बना लिया है जानकारी बॉक्स अन्य दृश्य (पॉपअप गुब्बारा) के लिए लंगर डाले प्रदर्शित करने के लिए। चाइल्ड व्यू वास्तविक जानकारी बॉक्स है, बुलून व्यू बच्चे की पूर्ण स्थिति के लिए पूर्णस्क्रीन है, और स्पर्श को अवरुद्ध करता है।
public BalloonView(View anchor, View child) {
super(anchor.getContext());
//calculate popup position relative to anchor and do stuff
init(...);
//receive child via constructor, or inflate/create default one
this.child = child;
//this.child = inflate(...);
//this.child = new SomeView(anchor.getContext());
addView(child);
//this way I don't need to create intermediate ViewGroup to hold my View
//but it is fullscreen (good for dialogs and absolute positioning)
//if you need relative positioning, see @iturki answer above
((ViewGroup) anchor.getRootView()).addView(this);
}
private void dismiss() {
((ViewGroup) getParent()).removeView(this);
}
बच्चे के अंदर हैंडल क्लिक:
child.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//write your code here to handle clicks inside
}
});
अंतर्निहित देखने के लिए स्पर्श सौंपने के बिना बाहर क्लिक करके मेरी देखें खारिज करने के लिए:
BalloonView.this.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
स्पर्श सौंपने के साथ बाहर क्लिक करके मेरी देखें खारिज करने के लिए अंतर्निहित देखें:
@Override
public boolean onTouchEvent(MotionEvent event) {
dismiss();
return false; //allows underlying View to handle touch
}
वापस बटन दबाया पर खारिज करने के लिए:
//do this in constructor to be able to intercept key
setFocusableInTouchMode(true);
requestFocus();
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dismiss();
return true;
}
return super.onKeyPreIme(keyCode, event);
}
एक चार्म की तरह काम किया! धन्यवाद :) मुझे संदेह था कि रिक्त छविदृश्यों को पहचाना जाएगा – CQM
आप आसानी से डमी दृश्य के रूप में उपयोग कर सकते हैं। वे थोड़ा हल्का हैं और इसे एक्सएमएल में देखकर एक अच्छा अनुस्मारक है कि इसे विज़ुअल तत्व – zienkikk
@RD के रूप में उपयोग नहीं किया जाता है। जानकर ख़ुशी हुई की :) । मैंने रिलेवेटिवआउट के साथ इस तरह की चालें कीं। यह एक लचीला लेआउट से अधिक है। – iTurki