안드로이드 개발 질문/답변
(글 수 45,052)
java source상에서 작성한 view의 width, height정보를 알 수 있나요?
예를 들어 아래의 소스에서 tv의 width, height 값들을 알 수 없나요?
tv.getMeasuredWidth(), tv.getWidth() 둘 다 0으로 나오네요
width값을 알 수 없을까요?
-----------------------------------------------------------------------------------
TextView tv = new TextView(this);
tv.setText("test");
setContentView(tv);
-----------------------------------------------------------------------------------
2010.07.21 14:43:18
getMeasuredWidth(), getWidth() 함수는 어느 시점에 불렸는지에 따라 다릅니다.
만약 onCreate() 안에서 한다면 당연히 0이 나옵니다.
위 함수들이 반환하는 값은 onLayout()이 끝난후에 제대로 된 값이 돌아옵니다.
View가 화면에 그려질 때 onMeasure(), onLayout() 등이 호출이 됩니다.
이때 해당 view가 그려질 크기와 위치가 계산이 됩니다.
그러므로 위 절차가 끝나지 않으면 view의 위치(top, left 등)나 크기(width, height) 들을 알수 없습니다.
2010.07.21 16:01:06
네 그건 알고 있습니다.
제가 궁금한 것은 onLayout()을 처리하기전에 좌표값은 모르더라도 선택한 view가 자지하는 면적을 알 수 없을까하는 것이죠.
여러view들이 있을 때 제가 원하는 순서대로 출력하고 싶을 때 각 view들이 출력되어야 하는 위치를 계산하기 위해서 필요로 합니다.
제 생각엔 힌트로 view의 가로값을 제한하였을 때 해당 view가 정상적으로 출력되기 위해서 높이 값은 얼마를 가져야 한다. 등의 정보를 알려줄 수 있는 객체가 있을듯한데 그게 어떤 것인지를 모르겠군요 아시는 분들 계시다면 도움을 주시기 바랍니다.