로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
심화

안드로이드 앱 프로그래밍

임시 이미지 정재곤
http://www.boostcourse.org/mo316/notice/2557
좋아요 1439 수강생 20255

아래의 글은 BOOSTER 서포터즈로 활동했던 zhfpt***님이
작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
1)링크: https://blog.naver.com/zhfptm12/221796453994
2)작성날짜: 20/02/04
<본문작성>
[LECTURE] 1) 상대 레이아웃 (RelativeLayout) : edwith

들어가기 전에 리니어 레이아웃이 동작하는 방식을 이해했다면 레이아웃을 만드는 것이 그리 어렵지 않을 것입니다. 그런데 화면의 위와 아래쪽에 작은 뷰를 두고 그 뷰 사이에 꽉 차게 ... - 부스트코스

www.edwith.org

이번 강의에서 알아볼 내용은 상대 레이아웃입니다. 이름의 '상대' , 말 그대로 레이아웃이나 다른 뷰 들의 상대적 위치를 이용해 화면을 배치하는 레이아웃입니다.

그럼 이제 상대 레이아웃, 부모 레이아웃과의 상대적 위치, 다른 뷰와의 상대적 위치를 키워드로 알아보겠습니다.

​

상대 레이아웃(RelativeLayout)

상대 레이아웃은 다른 뷰나 부모 뷰와의 상대적인 위치를 이용해 뷰를 배치하는 방법입니다. 아래 사진과 같은 개념입니다.

RelativeLayout

​

부모 레이아웃과의 상대적 위치

상대 레이아웃이 어떤 뷰를 담고 있다면, 뷰의 입장에서는 상대 레이아웃이 부모 레이아웃이 되게 됩니다.

뷰를 부모 레이아웃 아래쪽에 붙이고 싶다면 android:layout_alignParentBottom = "true"라고 설정하면 됩니다.

부모 레이아웃과의 상대적 위치를 지정할 때 사용하는 속성으로는 layout_alignParentTop, layout_alignParentBottom, layout_alignParentLeft, layout_alignParentRight 등이 있습니다.

부모 레이아웃의 가운데에 배치하기 위한 layout_centerInParent 속성도 있습니다.

​

다른 뷰와의 상대적 위치

다른 뷰와의 상대적 위치를 지정할 때 사용하는 속성으로는 layout_toLeftOf, layout_toRightOf, layout_alignTop, layout_alignBottom 등이 있습니다.

리니어 레이아웃을 이용해 화면을 배치할 때 쉽게 되지 않는 것 중의 하나가 위, 아래에 뷰를 두고 가운데에 또 다른 뷰를 두면서 꽉 차게 만드는 것입니다.

그 이유는 가운데 뷰를 꽉 차게 하려면 layout_height를 match_parent로 설정해야 합니다. 그렇게 되면 맨 아래 뷰가 가려져 보이지 않게 되는 문제가 생깁니다.

하지만 상대 레이아웃을 이용하면 간단하게 해결할 수 있습니다.

A 뷰는 android:layout_alignParentTop = "true"

B 뷰는 android:layout_below = "@+id/A" , android:layout_above = "@+id/C"

C 뷰는 android:layout_alignParentBottom = "true"

라고 속성값을 주면 됩니다.

​

​

<생각해보기>

1. 상대 레이아웃을 잘 사용할 수 있다면 다른 레이아웃은 필요 없는 걸까요?

- 각 레이아웃마다 장점이 되는 부분이 있기 때문에, 상황에 맞게 사용해야 합니다.

2. 리니어 레이아웃과 상대 레이아웃을 잘 조합해서 사용하는 방법을 생각해보세요.

-  상대 레이아웃 안에 리니어 레이아웃을 배치해서 구역을 나눠 뷰들을 정렬시킬 수 있을 것 같습니다.

3. 화면에 보이는 뷰들의 일부가 겹쳐있도록 만들 수도 있을까요?

- 뷰에 below 나 above 속성을 주지 않는다면 가능할 것 같습니다.

 

*********************************************