2011-01-17 7 views
2

레이아웃 패스가 완료되면 어떻게 알림을받을 수 있습니까? onLayoutFinished() 같은 것을 구현하거나 대체 할 수 있습니까? View 자바 독 가입일Android의 레이아웃 변경 내용 수신

하십시오 계수 패스 레이아웃 패스 :

레이아웃은 2 단계 프로세스이다. 측정 패스는 measure (int, int)로 구현되며 뷰 트리를 통과하는 하향식 입니다. 각 뷰 은 재귀 동안 차원 지정을 아래로 푸시합니다. 측정 패스의 끝 부분에는 모든 뷰 에 측정 값이 저장되어 있습니다. 두 번째 패스는 레이아웃 (int, int, int, int)에서 발생하며 하향식입니다. 이 패스 중에 각 부모는 측정 패스에 계산 된 크기를 사용하여 어린이를 모두 배치 할 책임이 있습니다.

"두 번째 단계"가 완료된 후 일부 논리를 실행하는 것이 좋습니다. 특히, 뷰를 약간 변경 한 다음 첫 번째 뷰의 프레임 (위치 및 크기)에 의존하는 다른 뷰를 변경하려고합니다.

답변

3

onLayout()을 재정의하고 super.onLayout()을 호출 한 후 수행해야하는 작업을 수행 할 수 있습니다. 레이아웃 패스가 뷰의 좌표/크기를 변경할 때만 호출되는 onSizeChanged()를 재정의 할 수도 있습니다.

+0

onLayout()을 재정의하려고 시도했지만 예상대로 작동하지 않았습니다. 플랫폼이 일을하는 방식에 맞서 싸우고있는 것처럼 느껴졌 기 때문에 마지막으로 레이아웃보기의 결과를 첫 번째보기에서 계산하고이를 바탕으로 두 번째보기의 레이아웃 변경을 요청했습니다. 같은 레이아웃 패스 중에 뷰가 함께 변경됩니다. – hpique