xml에서 설정한 뷰의 크기를 onDraw 메서드 이전에 알고 싶어서요.
크기에 따라서 뷰의 크기를 조절 해주려고 하거든요,
onDraw 메서드에서 xml에서 설정한 뷰의 크기를 알아 낼 수 는 있는데. 그렇게 되면 시뮬레이터에서는 xml에서 설정한 만큼 뷰가 그려진다음에
다시 onDraw 메서드가 호출되면서 크기가 조절이 되더라구요.
xml에서 아래와 같이 크기를 만들어 준다음에
<com.custom.view.CTextView
android:layout_width="300px"
android:layout_height="10px"
android:text="@string/hello_world"
android:background="#00FF00"
/>
자바코드에서 생성자 부분에서 크기를 얻고 싶었는데 생성자에서는 넓이 값이 0이 들어오고, onDraw부분에서 값이 들어오더라구요.
그리고 layout를 다시 지정 해주면 onDraw가 한번더 호출이 되는데
onDraw가 두번 호출이 되니까 화면에서 뷰가 움직이는게 보여서요.
public class CTextView extends TextView {
public CTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
// this.layout(5, 120, 5+790, 120+100);
int w = this.getWidth();
Log.i("testView", "CTextView = " + w);
}
@Override
protected void onDraw(Canvas canvas) {
int w = this.getWidth();
Log.i("testView", "onDraw = " + w);
// xml에서 한번 그려지고 난후 아래 layout을 호출했을때 onDraw가 한번더 들어 오더라구요...
this.layout(5, 120, 5+790, 120+100);
super.onDraw(canvas);
}
}
화면에 뷰가 두번 그려지지 않게 onDraw이전에 뷰의 크기를 알 수 있는 방법은 없을까요?