반응형
제목 그대로.
코드에서 동적으로 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 );
이건 된다. 물론 부하는 더 많이 걸리겠지만. 끝
반응형
'프로그램 > 안드로이드' 카테고리의 다른 글
안드로이드에서 view.getId() 가 -1 리턴 (0) | 2018.11.06 |
---|---|
java - xml 파서에서 cdata 처리법. (0) | 2017.04.07 |
안드로이드 OS 별 API Level 목록. (0) | 2017.04.05 |
안드로이드 스튜디오에서 프로젝트 파일을 읽지 못 할 경우. (0) | 2017.04.02 |
앱이 background 상태일때, FCM Notification event handler 를 수신하지 못하는 경우. (6) | 2017.03.31 |