나는 Android에서 사용자 정의보기를 작성했습니다. 이보기의 가시성이 변경되면 일부 처리를 수행해야합니다. 뷰/위젯의 가시성이 변경 될 때 호출되는 리스너가 있습니까?맞춤형 Android보기/위젯의 가시성 변경을 처리하는 방법
편집 :
내가 가시성을 변경하는 방법을 알고, 우리가보기에 setVisibility 때 호출되는 리스너가 있는지 알고 싶습니다!
나는 Android에서 사용자 정의보기를 작성했습니다. 이보기의 가시성이 변경되면 일부 처리를 수행해야합니다. 뷰/위젯의 가시성이 변경 될 때 호출되는 리스너가 있습니까?맞춤형 Android보기/위젯의 가시성 변경을 처리하는 방법
편집 :
내가 가시성을 변경하는 방법을 알고, 우리가보기에 setVisibility 때 호출되는 리스너가 있는지 알고 싶습니다!
사용자 정의보기 클래스 내에서 처리하려고합니까? 그렇다면 setVisibility() 메서드를 재정의하고 super()를 호출 한 다음 사용자 지정 처리를 수행하는 것이 가장 좋은 이유는 무엇입니까? 내가 가시성을 변경하는 방법을 알고
위젯의 공개 설정을 변경하려면 widget.setVisibility(View.Visible)
또는 widget.setVisibility(View.Invisible)
메소드를 사용하십시오.
은, 우리가보기에 setVisibility 때 호출되는 리스너가 있는지 알고 싶습니다하십시오! – JeeZ
은, 우리가보기에 setVisibility 때 호출되는 리스너가 있는지 알고 싶습니다!
당신은 당신의 view/widget
를 서브 클래스 화해, setVisibility
을 무시하고이 통지를 받아 봐 것이다에 인터페이스를 등록해야합니다. 예 :
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