보통의 안드로이드는 MVC(Model-View-Controller)를 충실하게 이행하고 있습니다. 여기서 View에 해당하는 부분을 XML을 이용하여 표현하고 있죠. 이것은 어찌보면 편리하고 좋아 보이지만 동적인 화면 구성은 역시나 코드에 의존할 수 밖에 없습니다. 아이폰에서도 아무리 Interface Builder에 의존하더라도 이런 부분은 어쩔수 없는게 아닐까 싶기도 하고요.
그래도 조악한 안드로이드의 XML에디터를 보면 Interface Builder에 한표 더 주고 싶어지네요. 아무튼 코드에 의존한 레이아웃 동적 변화를 위해서는 LayoutParam이라는 클래스를 이용해야 합니다. 이 클래스는 거의 대부분의 화면 구성을 위한 ViewGroup을 상속받는 클래스들은 가지고 있습니다.
저기 스크린샷에 보이는 클래스들이 다양한 화면 구성을 위한 위젯들이 가지고 있는 레이아웃 파라미터 클래스입니다. 적용하려는 위젯에 따라 적절히 선택하여 사용을 하시면 됩니다. 어떤것을 사용하냐에 따라 추가로 설정할 수 있는 범위도 달라집니다.
예를 들면 LinearLayout.LayouutParams의 경우 여백의 값을 설정할 수 있습니다. 나머지 위젯의 LayoutParams들도 마찬가지로 위젯에 특화된 기능들이 한두가지씩 있습니다.
[code java]LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
params.setMargins(15, 20, 15, 20); //left, top, right, bottom[/code]
위에서 볼 수 있듯이 FILL_PARENT, WRAP_CONTENT 설정을 사용할수도 있습니다. 다음은 이렇게 사용한다는 예제입니다.
[code java]LinearLayout ll = new LinearLayout(this);
LinearLayout.LayoutParams lparam = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
lparam.width = 200;
ll.setLayoutParams(lparam);
ll.setBackgroundColor(Color.parseColor(“#00ff00”));
setContentView(ll);[/code]