drcarter의 DevLog

layout 디자이을 할 때 margin값을 사용하곤 합니다.
디자이너에서는


그림과 같이 해당 부분의 값을 변경하여 margin 값을 사용하곤 합니다.

하지만 java 코드에서 이 값을 변경하기 위해서는 layout의 객체에 직접적인 값을 할당하지 못합니다.
변경하고 싶은 해당 layout이 있다면, 이 해당 layout을 포함하고 있는 ViewGroup이 있을 것입니다.


그림에서 LinearLayout1의 margin값을 변경하고 싶다면 코드 상으로는
LinearLayout layout1 = (LinearLayout) findViewById(R.id.LinearLayout1);

/*변경하고 싶은 레이아웃의 파라미터 값을 가져 옴*/
RelativeLayout.LayoutParams plControl = (RelativeLayout.LayoutParams) layout1.getLayoutParams();

/*해당 margin값 변경*/
plControl.bottomMargin = 10;
plControl.topMargin = 10;

/*변경된 값의 파라미터를 해당 레이아웃 파라미터 값에 셋팅*/
layout1.setLayoutParams(plControl);

코드로는 이런식으로 변경 합니다.
해당 레이아웃의 파라미터 값을 변경하겠다고, 해당 레이아웃의 LayoutParams의 객체를 만드는 것이 아니라, 그 상위에 있는 ViewGroup의 레이아웃의 객체를 만들어 내는 것이 필요하겠습니다. 이렇게 안하면 에러가 나요 ㅜㅜ