- RelativeLayout은 내부 View들이 서로 상대적인 위치에 따라 배치되어 표시 해 준다. 서로를 인식하기 위해서는 반드시 ID를 정의 해야 한다.
- 상대적인 위치 인식은 컴파일 시에 가장 먼저 선언된 리소스를 기준으로 배치하기 때문에 절차적으로 선언 해야 한다는 것을 잊지말자. 예를 들어 아래와 같이 A를 B 위에 위치하려면 먼저 B가 ID를 갖고 선언이 되어 있는 상태에서 A는 B의 ID를 참조하여 위에 위치한다는 layout_above 속성값을 가지면 된다.
- RelativeLayout에 자주 사용되는 속성들은 아래와 같다.
속 성
설 명
android:layout_above
뷰의 하단 가장자리를 대상뷰의 상단에 붙임(@id/abc)
android:layout_below
뷰의 상단 가장자리를 대상뷰의 하단에 붙임(@id/abc)
android:layout_toLeftOf
뷰의 오른쪽 가장자리를 대상뷰의 왼쪽에 붙임(@id/abc)
android:layout_toRightOf
뷰의 왼쪽 가장자리를 대상뷰의 오른쪽에 붙임(@id/abc)
android:layout_alignBaseline
기본적인 위치 는 해당 id를 기준으로 (@id/abc)
android:layout_centerInParent
부모뷰의 정중앙에 위치하도록 함(true, false)
android:layout_centerHorizontal
부모뷰의 수평 중앙에 배치 (true, false)
android:layout_centerVertical
부모뷰의 수직 중앙에 배치 (true, false)
android:layout_alignParentBottom
부모뷰의 아래 위치 (true, false)
android:layout_alignParentLeft
부모뷰의 왼쪽 위치 (true, false)
android:layout_alignParentRight
부모뷰의 오른쪽 위치 (true, false)
android:layout_alignParentTop
부모뷰의 상단 위치 (true, false)
- 간단한 명함을 RelativeLayout으로 표현 해 보자.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:padding="5px" android:background="#ffffff" android:layout_height="wrap_content"> <ImageView android:layout_height="wrap_content" android:src="@drawable/icon" android:id="@+id/picture" android:layout_width="wrap_content" android:layout_alignParentLeft="true" android:layout_marginRight="5px" /> <Button android:text="ok" android:id="@+id/button1" android:layout_below="@id/picture" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="아폴로" android:id="@+id/name" android:textColor="#000000" android:textSize="12pt" android:layout_alignParentTop="true" android:layout_toRightOf="@id/picture" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="123-456-7890" android:id="@+id/call" android:textColor="#0000ff" android:textSize="6pt" android:layout_alignParentRight="true" android:layout_alignBaseline="@id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="아폴로 딸기맛은 정말 맛있다. 하지만 불량식품이다. 역시 몸에 나쁜것이 더 맛있는 법인가 보다." android:id="@+id/description" android:textColor="#000000" android:textSize="6pt" android:layout_below="@id/name" android:layout_alignLeft="@id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout>
실행 결과는 아래와 같다.
- 처음 레이아웃을 배울 때 html 처럼 <div>로 계속 감싸는 것 처럼 LinearLayout하나를 여러번 사용해 UI툴을 이용해 더 간편히 만들 수 있지 않나 하는 의문이 들었는데, 많은 Layout의 사용은 어플리케이션의 퍼포먼스를 저하시키는 주요 원인이 된다고한다.
'Programming > ANDROID' 카테고리의 다른 글
setContentView 에 대한 고찰.. (6) | 2011.03.30 |
---|---|
Layout 중첩 - Multi Page (6) | 2011.03.29 |
ViewGroup - TableLayout (1) | 2011.03.29 |
ViewGroup - FrameLayout (1) | 2011.03.28 |
ViewGroup - LinearLayout (2) | 2011.03.28 |