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

뷰 객체의 left,right값을 얻어오는 과정 질문

0 추천
dynamic_linear = new LinearLayout[c.getCount()];

		for (int i = 0; i < c.getCount(); i++) {
			dynamic_linear[i] = new LinearLayout(mContext);
			dynamic_linear[i].setLayoutParams(linear_layoutparams);
			ll_content.addView(dynamic_linear[i]);
			Log.d("left", dynamic_linear[i].getLeft() + "");
		}

 

이런식으로 동적으로 리니어레이아웃을 생성중입니다. ll_content의경우 Horizontal 이구요.. 생성은 무지 잘됩니다.

근데 left값을 받아오면 다 0이 뜨는데 어떻게해야하나요??

저거말고 레이아웃마다 onclick리스너를 줘서 클릭한 뷰의 Left를 출력하면 그떈 또 잘 출력이 되더라구요.

원인이 뭔지..해결방법이궁금합니다

katoro (340 포인트) 님이 2013년 5월 17일 질문

2개의 답변

0 추천
view 생성시에는 크기가 정해지지 않아서 0으로 나옵니다.

activity 의 onWindowFocusChanged 가 수행될때 가져오면 원하는 결과를 얻을수 있습니다.
kfmes (900 포인트) 님이 2013년 5월 17일 답변
답변감사합니다!! 그런데 제가 지금 저 소스코드를 액티비티가 아닌 새로운 클래스에서 실행했거든요..
그러면 저 클래스 내부에서는 생성된 뷰의 크기를 알수 있는 방법이 없습니까ㅠㅠ?
activity 에서 그 클래스를 호출하게 하면 될거같네요,
아니면 view.measure 를 이용해 그려지기 전에 크기를 측정할수 있긴합니다.
http://wefu.tistory.com/58
0 추천

kfmes 님 말씀대로입니다.

해당 액티비티 내에서 동적으로 레이아웃이 추가가 되면

화면이 갱신되는 과정에서 onWindowFocusChanged()가 호출되게 됩니다.

동적추가를 하는 액티비티에서 onWindowFocusChanged() 메서드를 오버라이드 해서 left크기를 가져오시면 됩니다.

Noizbuster (11,970 포인트) 님이 2013년 5월 18일 답변
...