2011-10-14 4 views
10

매우 간단한 사용자 정의보기 (onMeasure())가 오버라이드되었습니다. 내 onMeasure()은 배경 Drawable에 따라 크기를 결정합니다. 보기가 xml에서 처음 생성 될 때 모든 것이 정상적으로 작동합니다. 그런 다음 프로그램 적으로 다른 배경을 설정하여보기의 크기를 조정해야합니다. 보기는 이제 배경이 다르지만 크기가 조정되지 않고 onMeasure()이 호출되지 않습니다.View.onMeasure()가 호출되지 않았습니다.

나는 모든 것을 시도했다 - requestLayout(), forceLayout(), invalidate(), setLayoutParams() - 아무 효과가 없었다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 보기의 크기를 조정하기 만하면됩니다.

답변

-2

확실한 방법을 시도해 보셨습니까? 즉, 귀하의 방법이 어떻게 선언 되었습니까?

@override 주석을 추가하지 않은 경우 추가하고 컴파일러에서 아무 것도 무시하지 않는다고 알려주는지 확인하십시오. 그렇다면 이름과 방법 서명이 onMeasure인지 확인하십시오.

그렇지 않은 경우 measure() 메서드를 호출해야 할 때를 이해해야합니다 (How Android draws Views).

+0

예, 저는 @Override를 사용하고 있습니다 - 내 onMeasure()가 활동이 생성 될 때 두 번 호출되는 것을 봅니다. 그러나 View.setBackground() 후에 호출되지 않습니다. – fhucho

+0

당신이 링크 한 기사는 requestLayout()이 작동해야한다고 제안하지만 그렇지 않습니다. – fhucho

1

문제점은 내 View의 onSizeChanged() 내에서 setBackground()를 호출하고 있다는 것이 었습니다. 코드를 리팩토링했고 이제 작동합니다.

관련 문제