RelativeLayout 사용하기
- Posted at 2010. 8. 22. 02:44
- Posted by 루지메이앙
- Filed under 안드로이드/펌글
');
}
//-->
|
');
}
//-->
|
2. RelativeLayout
RelativeLayout은 위젯의 위치를 상대 위젯/ 컨테이너를 기준으로 결정하는 방법이다.
첫 번째로, 부모 컨테이너 내부에서 위젯 자신의 위치를 결정하는 속성은 다음과 같다.
위의 속성들은 모두 true, false 값을 입력 받는다.
두 번째로, 상대 위젯/컨테이너를 기준으로 배치 시 사용하는 속성은 다음과 같다.
마지막 android:layout_alignBaseline는 label과 EditText등의 Text기반 위젯의 글자 높이를 맞추는데 유용하게 쓰임.
위의 모든 attribute들은 기준이 되는 상대 위젯/컨테이너의 id를 값으로 지정하여야 한다.
기준이 되는 상대 위젯의 id는 "@id/위젯id"로 결정한다.
예를들어, 위젯 A 가 android:id="@+id/A"로 identiy되어있다면XML 내부에서 위젯 A는 "@id/A"로 불린다.
그럼으로 위젯 B를 위젯 A 오른쪽에 위치 하게 하고 싶다면 위젯 B의 alignment 속성을 다음과 같이 지정한다.
<위젯 A
......
android:id="@+id/A" />
<위젯 B
......
android:layout_alignRightOf="@id/A" />
이 경우 위젯 A, B는 다음과 같은 형태로 배치 된다.
RelativeLayout에서 주의할 두 가지 점은:
- XML Layout 파일은 위에서 아래로 순차적으로 한번 파싱됨으로 XML 문서상 밑에 위치한 위젯의 id를 위에 위치한 위젯이 참고하는 것은 불가능 하다. (아직 선언되지 않은 변수를 참조 할 수 없는 것과 같다.)
- 모든 fill 관련 속성은 자신 이외의 위젯이 사용하고 남은 스페이스에만 적용됨.
RelativeLayout 예제 (main.xml)
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="5px" > <!-- XML layout은 위에서 부터 밑으로 parsing 됨으로 --> <!-- 다음의 TextView내부에서 아직 선언되지 않은 --> <!-- EditText나 Button들의 id(@id/edittext, @id/ok, @id/cancel)를 사용할 수 없음 --> <TextView android:id="@+id/label" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="URL" android:paddingTop="15px" android:paddingRight="10px" /> <!-- 다음의 EditText(edittext)의 layout_width="fill_parent"는 --> <!-- 위 TextView(lable)가 사용하고 남은 공간을 채움 --> <EditText android:id="@+id/edittext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toRightOf="@id/label" android:layout_alignBaseline="@id/label" android:text="http://tigerwoods.tistory.com" /> <Button android:id="@+id/ok" android:layout_width="80px" android:layout_height="wrap_content" android:layout_alignRight="@id/edittext" android:layout_below="@id/edittext" android:text="OK" /> <Button android:id="@+id/cancel" android:layout_width="80px" android:layout_height="wrap_content" android:layout_toLeftOf="@id/ok" android:layout_below="@id/edittext" android:text="Cancel" /> </RelativeLayout>
실행결과는 다음과 같다.
RelativeLayout의 완전한 API Reference는 다음의 링크를 참조.
RelativeLayout API Reference 링크
출처 : http://tigerwoods.tistory.com/11