안녕하세요 ! 초보개발자 입니다.
이 블로그는 개인 공부 정리용 블로그 입니다.
혹 잘못된 내용이 있다면 지적 부탁드리겠습니다.
그리고 질문주신다면 최대한 아는선에서 답변드리도록 하겠습니다.
그럼 시작하도록 하겠습니다.
RelativeLayout(상대 레이아웃)
상대 레이아웃은 부모 컨테이너나 다른 뷰와의 상대적인 위치를 이용해 뷰의 위치를 결정 할 수 있습니다. 예를 들어 하나의 뷰 밑에 또 다른 뷰를 배치하고 싶을 때 뷰밑에 지정하는 속성을 XML 레이아웃에서 설정 할 수 있습니다. 예를 들면 다음과 같습니다.
A라는 뷰는 부모 뷰의 위쪽으로 배치를 하였고 C라는 뷰는 A의 오른쪽아래에 배치 그리고 마지막 B는 A의 아래 그리고 C의 왼쪽으로 배치 하였습니다.
예제를 통하여 상대레이아웃에 대해서 더 자세하게 알아 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.realativelayout.MainActivity"> <RelativeLayout android:id="@+id/re1" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/re2" android:background="#aabbccdd"> </RelativeLayout> <RelativeLayout android:id="@+id/re2" android:layout_width="100dp" android:layout_height="100dp" android:layout_above="@+id/re4" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:background="#aad25e4f"></RelativeLayout> <RelativeLayout android:id="@+id/re3" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_below="@+id/re1" android:background="#aa134ddf"></RelativeLayout> <RelativeLayout android:id="@+id/re4" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:layout_toRightOf="@+id/re3" android:background="#aaa10fc6"></RelativeLayout> <RelativeLayout android:id="@+id/re5" android:layout_width="100dp" android:layout_height="100dp" android:layout_below="@id/re1" android:layout_toLeftOf="@+id/re2" android:layout_toRightOf="@+id/re3" android:layout_above="@+id/re4" android:background="#aa000000"></RelativeLayout> </RelativeLayout> | cs |
위 예제의 결과 화면입니다.
약간 복잡해 보일 수도 있지만 리니어 레이아웃에서 배웠던 것과 비슷합니다. 단지 LinearLayout에 없었던 속성들이 새로 들어간 것입니다.
상대 레이아웃에서 부모 컨테이너와의 상대적 위치를 이용해 뷰를 배치할 수 있는 속성들은 다음과 같습니다.
속성 |
설명 |
layout_alignParentTop |
부모 컨테이너의 위쪽과 뷰를 맞춤 |
layout_alignParentBottom |
부모 컨테이너의 아래쪽과 뷰의 아래쪽을 맞춤 |
layout_alignParentLeft |
부모 컨테이너의 왼쪽 끝과 뷰의 왼쪽 끝을 맞춤 |
layout_alignParentRight |
부모 컨테이너의 오른쪽 끝과 뷰의 오른쪽 끝을 맞춤 |
layout_centerHorizontal |
부모 컨테이너의 수평 방향 중앙에 배치함 |
layout_centerVertical |
부모 컨테이너의 수직 방향 중앙에 배치함 |
layout_centerlnParent |
부모 컨테이너의 수평과 수직 방향 중앙에 배치함 |
부모 컨테이너가 아니라 다른 뷰와의 상대적 위치를 이용해 뷰를 배치할 수 있는 속성들은 다음과 같습니다.
속성 |
설명 |
layout_above |
지정한 뷰의 위쪽에 배치함 |
layout_below |
지정한 뷰의 아래쪽에 배치함 |
layout_toLeftOf |
지정한 뷰의 왼쪽에 배치함 |
layout_toRightOf |
지정한 뷰의 오른쪽에 배치함 |
layout_alignTop |
지정한 뷰의 위쪽과 맞춤 |
layout_alignBottom |
지정한 뷰의 아래쪽에 맞춤 |
layout_alignLeft |
지정한 뷰의 왼쪽과 맞춤 |
layout_alignRight |
지정한 뷰의 오른쪽과 맞춤 |
layout_alignBaseline |
지정한 뷰와 내용물의 아래쪽 기준선을 맞춤 |
위의 내용을 바탕으로 XML 을 분석하면 될 것 입니다.
먼저 부모 RelativeLayout 안에 5개의 RelativeLayout을 만들고 각각 색을 다르게 한 다음 ID값을 부여 합니다. ID 값이 re1 인 레이아웃의 속성은 layout_alignParentLeft 와 layout_alignParentTop 의 값을 true로 주었습니다. 그렇다면 이 레이아웃은 부모의 왼쪽과 위쪽에 뷰를 맞출 것입니다. 그리고 layout_toLeftOf="@+id/re2" 에 의해 ID가 re2인 레이아웃의 왼쪽에 붙게 됩니다. 이런 속성들을 파악하시어 각각의 레이아웃의 배치를 분석해 보면 위와 같은 화면이 나타날 것 입니다. 나머지는 여러분이 직접 분석해보시면 이해가 가실 겁니다.
이상으로 RelativeLayout에 대해서 알아 보았습니다. 수고하셨습니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드] 카메라로 사진찍어서 이미지뷰에 보여주기 (4) | 2017.05.02 |
---|---|
[안드로이드] SharedPreferences를 이용한 자동로그인 기능 구현 (106) | 2017.05.02 |
[안드로이드] ScrollView(스크롤 뷰) (1) | 2017.04.29 |
[안드로이드] 레이아웃(3) - TableLayout (1) | 2017.04.28 |
[안드로이드] 레이아웃(1) - LinearLayout(리니어 레이아웃) (2) | 2017.04.26 |