आपको उस दृश्य को उपclass करना है जिसे आप श्रोता जोड़ना चाहते हैं। फिर आपको setVisibility
के बजाय onVisibilityChanged
ओवरराइड करना चाहिए। onVisibilityChanged
तब ट्रिगर होता है जब दृश्य की दृश्यता किसी भी कारण से बदली जाती है, जिसमें पूर्वजों के विचार को बदल दिया गया था।
यदि आप View
की दृश्यता में परिवर्तन करते समय एक अलग वर्ग को अधिसूचित करना चाहते हैं तो आपको एक इंटरफ़ेस की आवश्यकता होगी।
उदाहरण:
public class MyView extends View {
private OnVisibilityChangedListener mVisibilityListener;
public interface OnVisibilityChangedListener {
// Avoid "onVisibilityChanged" name because it's a View method
public void visibilityChanged(int visibility);
}
public void setVisibilityListener(OnVisibilityChangedListener listener) {
this.mVisibilityListener = listener;
}
protected void onVisibilityChanged (View view, int visibility) {
super.onVisibilityChanged(view, visibility);
// if view == this then this view was directly changed.
// Otherwise, it was an ancestor that was changed.
// Notify external listener
if (mVisibilityListener != null)
mVisibilityListener.visibilityChanged(visibility);
// Now we can do some things of our own down here
// ...
}
}
में और व्याख्या, कृपया – cgalvao1993