티스토리 뷰
Relative Layout
• 부모가 될 수 있는 뷰 (컨테이너 뷰)
• 자식 뷰들을 특정 기준점을 기준으로 정리하는 레이아웃
- 기준점 : 부모 뷰, 자식 뷰
• 계산하는 방식이 리소스를 많이 먹음
-> 정말 필요할 때만 사용
1. 부모 뷰 기준
• 부모 뷰를 기준으로 자식 뷰들의 위치를 정함
• 속성
- android:layout_alignParentLeft="true" : 부모 뷰 안의 맨 왼쪽에 자식 뷰 배치
- true false로 속성 적용 여부 결정
- Left 대신 Right, Top, Bottom 등을 넣어 상하좌우 위치 설정
- android:layout_centerInParent="true" : 부모 뷰 안의 정가운데에 자식 뷰 배치
- true false로 속성 적용 여부 결정
2. 자식 뷰
• 특정 자식 뷰를 기준으로 다른 자식 뷰들의 위치를 정함
• 특정 자식 뷰를 기준점으로 사용하기 위해서는 어느 뷰 하나를 특정하는 방법이 필요함.
-> id 속성을 사용
• 속성
- android:id="@+id/아이디" : 뷰를 특정할 수 있는 id 설정
- id는 @+id/이름 형식으로 정한다.
ex) android:id="@+/childView1"
- android:layout_above="@+id/아이디" : 해당 아이디를 가진 뷰를 기준으로 위쪽에 배치
- 상하만 고려하여 설정되기 때문에 좌우는 따로 설정하여야 한다.
- above 대신 below를 넣어 상하 위치 설정
- android:layout_toRightOf="@+id/아이디" : 해당 아이디를 가진 뷰를 기준으로 오른쪽에 배치
- 좌우만 고려하여 설정되기 때문에 상하는 따로 설정하여야 한다.
- toRightOf 대신 toLeftOf를 넣어 좌우 위치 설정
* 대부분의 속성들은 서로 간의 충돌없이 거의 독립적이다.
ex) 왼쪽 배치 속성 + 아래쪽 배치 속성 -> 왼쪽 아래 배치
3. 실전
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="#FF0000" />
<TextView
android:id="@+id/centerView"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerInParent="true"
android:background="#00FF00" />
<TextView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_above="@+id/centerView"
android:layout_toLeftOf="@+id/centerView"
android:background="#0000FF" />
</RelativeLayout>
이 글은
패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online
강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.
'📱 Android > 🔍 UI' 카테고리의 다른 글
[Android/UI] 8. 네임스페이스(namespace) (0) | 2022.10.17 |
---|---|
[Android/UI] 7. Margin(마진) & Padding(패딩) (0) | 2022.10.14 |
[Android/UI] 5. 리니어 레이아웃(Linear Layout) (0) | 2022.10.14 |
[Android/UI] 4. 뷰 속성 (0) | 2022.10.13 |
[Android/UI] 3. 뷰 컴포넌트(View Component) (0) | 2022.10.13 |