2016-10-21 2 views
0

AnswerImageView으로 확장됩니다. 이 객체는 프로그램 적으로 컨테이너 뷰에 추가되고 위치 초기화 메서드는 onWindowFocusChanged()에서 호출됩니다.이 메서드는 올바른 여백과 레이아웃 매개 변수를 설정하고 가시성을 켭니다. 그런 다음 getLeft()을 호출하여 응답의 초기 X 위치를 얻으려고합니다. 이 클래스가 Answers 클래스 this.getLeft() 또는 주 활동 answer_object1.getLeft()에서 호출되는지 여부와 상관없이 여전히 0을 반환합니다.`getLeft()`는`onWindowFocusChanged()`에서 0을 반환합니다.

왜 그럴까요?

XML을 통해 이미지보기를 추가하고 onWindowFocusChanged()에서 'getLeft()'를 호출하면 올바른 값을 반환합니다.

답변

2

getLeft()은 레이아웃 단계가 완료되고 AnsweronLayout이 호출 된 후에 만 ​​실제 값을 반환합니다. 따라서보기의 초기 위치를 기록하려면 onLayout에서 수행하는 것이 좋습니다.

이제는 onWindowFocusChanged()을 말합니다. 문서는 onLayout 이전이나 이후에이 메서드를 호출 할 것인지에 대한 약속이 없으므로보기의 초기 위치를 기록하는 데 가장 적합하지 않습니다.