마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

View 클래스를상속받아서 커스텀뷰를 만드는데

0 추천
public class NoteView extends View implements Comparator<NoteView>

이런View 클래스를상속받아서 커스텀뷰를 만드는데

@Override
    protected void onMeasure

이나

@Override
    protected void onDraw

가 호출되지를않습니다

아래의 onSizeChanged 에서 invalidate(); 가 실행되어도

onDraw 함수가 실행안되는데 왜그런지 모르겠습니다

이런경우 어디를 살펴봐야될까요?

 

protected void onSizeChanged (int w, int h, int oldw, int oldh)
     {
         if(w != oldw)
         {
             if(w == 0 || h == 0)
                 return;
             invalidate();
         }
     }
잡부 (5,110 포인트) 님이 2015년 3월 4일 질문

1개의 답변

0 추천
커스텀뷰 인스턴스를 만들어서
전체 레이아웃에 삽입되었는데도 그런가요?
mamondebaltob (32,750 포인트) 님이 2015년 3월 4일 답변
예 addView 되어있습니다
전체적인구조는
public class TrackViewGroup extends ViewGroup
이런 뷰그룹커스텀뷰를 만들고
이뷰안에 질문의 NoteView 커스텀뷰를 넣었습니다

디버깅해보면
NoteView 의 onSizeChanged 호출되고
TrackViewGroup 의 onLayout 이호출됩니다
그외에 NoteView 의 onDraw 나 TrackViewGroup 의 dispatchDraw
는 전혀호출되지않습니다
TrackViewGroup 의 onLayout 에서 invalidate(); 를 호출해준상태이구요

TrackViewGroup 의 인스탄스를 100 개정도 만들어 addView 해줬고
TrackViewGroup 의 인스탄스 의각각에 NoteView 하나식을 넣은 상태로 테스트중입니다
...