私はアンドロイドでカスタムビューを作成しました。このビューの可視性が変更されたときに処理を行う必要があります。ビュー/ウィジェットの可視性が変更されたときに呼び出されるリスナーがありますか?カスタムのAndroidビュー/ウィジェットの可視性の変更を処理する方法
編集:
私は可視性を変更する方法を知って、私たちはビューにsetVisibilityたときに呼び出されるリスナーがあるかどうかを知りたいと思います!
私はアンドロイドでカスタムビューを作成しました。このビューの可視性が変更されたときに処理を行う必要があります。ビュー/ウィジェットの可視性が変更されたときに呼び出されるリスナーがありますか?カスタムのAndroidビュー/ウィジェットの可視性の変更を処理する方法
編集:
私は可視性を変更する方法を知って、私たちはビューにsetVisibilityたときに呼び出されるリスナーがあるかどうかを知りたいと思います!
ウィジェットの表示を変更するには、widget.setVisibility(View.Visible)
またはwidget.setVisibility(View.Invisible)
のメソッドを使用します。
は、我々はビューにsetVisibilityたときに呼び出されるリスナーがあるかどうかを知りたいと思います! – JeeZ
私は可視性を変更する方法を知っているが、我々はビューにsetVisibilityときに呼び出される リスナーがあるかどうかを知りたいと思います!
あなたview/widget
をサブクラス化し、setVisibility
をオーバーライドして、あなたが通知をreciveするインターフェイスを登録する必要があります。たとえば:
public class MyView extends View {
public interface MyListener {
public void onSetVisibilityCalled();
}
public void registerListener(MyListener myListener) {
this.mListener = myListener;
}
public void setVisibility (int visibility) {
super.setVisibility(visibility);
if (mListener != null)
mListener.onSetVisibilityCalled();
}
}
リスナーを追加するビューをサブクラス化する必要があります。 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