바탕화면의 상대좌표를 이용하여 그림을 그리거나, 콤포넌트를 배치하려고 할때 화면, view, layout 의 사이즈를 알아야 하는 경우가 있다.
아래와 같이 코딩해 보지만 원하는 결과값을 얻을 수 없다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main_layout);
View layoutMainView = (View)this.findViewById(R.id.mainLayout);
Log.w("Layout Width - ", String.valueOf(layoutMaintView.getWidht()));
Log.w("Layout Height - ", String.valueOf(layoutMaintView.getHeight()));
}
========= Result =========
Layout Width - 0
Layout Height - 0
원인으로는 onCreate 함수는 화면이 그려지기 전에 호출 되는 관계로 onCreate 시 객체의 사이즈를 구할 수 없다.
따라서 onCreate가 아닌 다른 함수에 해당 코드를 작성해야 한다.
그 코드는 바로....
onWindowFocusChanged(boolean hasFocus)
@Override
public void onWindowFocusChanged(boolean hasFocus) {
public void onWindowFocusChanged(boolean hasFocus) {
View layoutMainView = (View)this.findViewById(R.id.mainLayout);
Log.w("Layout Width - ", String.valueOf(layoutMaintView.getWidht()));
Log.w("Layout Height - ", String.valueOf(layoutMaintView.getHeight()));
}
위와 같이 작성하면 올바르게 사이즈를 리턴하는 것을 확인 할 수 있다.
정말 원하던 걸 얻었습니다!
답글삭제적용해볼게요 고맙습니다.
hello world!