1. RelativeLayout은 내부 View들이 서로 상대적인 위치에 따라 배치되어 표시 해 준다. 서로를 인식하기 위해서는 반드시 ID를 정의 해야 한다.
     
  2. 상대적인 위치 인식은 컴파일 시에 가장 먼저 선언된 리소스를 기준으로 배치하기 때문에 절차적으로 선언 해야 한다는 것을 잊지말자. 예를 들어 아래와 같이 A를 B 위에 위치하려면 먼저 B가 ID를 갖고 선언이 되어 있는 상태에서 A는 B의 ID를 참조하여 위에 위치한다는 layout_above 속성값을 가지면 된다.

     
  3. 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)

     
  4. 간단한 명함을 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>
    실행 결과는 아래와 같다.


  5. 처음 레이아웃을 배울 때 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

+ Recent posts