프로그램/안드로이드

안드로이드 view 동적 크기 변경. getLayoutParam() 안될때.

(주)CKBcorp., 2018. 11. 4. 16:57
반응형

제목 그대로. 

코드에서 동적으로 view 의 크기를 바꿔야 할 때가 있다. 이 때 가장 간단한 방법이


View.getLayoutParams().height = 123;

View.getLayoutParams().width = 123;


일 거다. 

그런데, 이게 안 먹는 때가 있다. 아마 객체의 동적 생성 순서 문제인 듯 한데. 어쨌던 뻑난다. 에러 코드는 아래와 같다. 

    java.lang.NullPointerException: Attempt to write to field 'int android.view.ViewGroup$LayoutParams.height' on a null object reference


내용은 말 그대로, LayoutParams 를 통해 width height 를 변경하려고 했는데, 객체가 null 이라는 뜻.
아마 안드로이드 내부적으로 코드 효율화 때문에, 랜더링이 안 된 상태에서 화면 객체값을 바꾸려니 에러 나는 거겠지. 
혹시나 해서 View.requestLayout() 이후 width, height 를 바꿔줬는데도 안 되더라. 
결론부터 이야기하면, 이 땐 LayoutParams 를 써라. 그럼 됨. 즉.


LayoutParams pp = new LayoutParams( 123, 456 );
View.setLayoutParams( pp );


이건 된다. 물론 부하는 더 많이 걸리겠지만. 끝



반응형