출처 : http://ldragon.tistory.com/4
Android에서 UI 구현은 보통 대부분 책에서도 XML을 이용하여 꾸미는 방법만 설명되어 있다.
XML 파일을 이용하는 방법은
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
다음과 같이 생성 프로젝트 res 폴더의 layout 폴더에 있는 xml 파일에서 작성이 가능하다. 이렇게 XML로 작성 후 Java 코드에서 findViewById를 이용하여(ex Button btn = (Button)findViewById(R.id.Button);) xml에서 작성한 UI 디자인을 사용할 수 있다.
이렇게 UI가 XML로 분리되게 되면 다음과 장점들을 가질 수 있다.
→ 로직과 UI를 파일단위로 분리할 수 있다.
→ 소스코드 변경없이 리소스만 변경하여 UI를 바꿀 수 있다.
→ Portrait / Landscape, 화면 해상도 별, 언어별로 XML 파일을 따로 만들어두고 하나의 로직에 연결하여 사용 가능하다.
→ 디자이너를 사용할 수 있다.
하지만 많은 책들에서는 이렇게 XML을 이용한 UI 제작 방법만 설명되어 있지만 XML을 쓰지 않고 java코드로도 정말 쉽게 UI를 생성 가능하다는 것을 설명하겠다.
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT);
linear.setLayoutParams(params);
linear.setOrientation(LinearLayout.VERTICAL);
Button btn = new Button(this);
EditText etx = new EditText(this);
linear.addView(btn);
linear.addView(etx);
setContentView(linear);
이렇게 Layout를 먼저 생성하고 그 안에 들어 갈 각 Button이나 EditText 등을 생성 후 addView만 해주면 된다.(너무 간단..)
추가적으로 View 위에 원하는 곳에 Button을 넣는 방법을 설명 하겠다.
XML로 디자인 후 속성 값을 변경하여 View 위에 Button을 올릴 수도 있지만 Java코드에서 UI를 생성 후 View 위에 Button을 올리기 방법은 다음 코드처럼 RelativeLayout 생성 후 그 위에 View와 버튼을 넣고 Button의 위치를 지정 해주면 된다.
btn = new Button(this);
RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
buttonParams.topMargin = 115;
buttonParams.rightMargin = 440;
btn.setLayoutParams(buttonParams);