[Andriod_04] 대표적인 뷰그룹 _RelativeLayout
📝RelativeLayout
자식 뷰를 서로의 관계에 따라 배치하는 속성과 뷰 그룹
📍클래스 계층 관계도
📍RelativelLayout의 기본속성
android:gravity
android:ignoreGravity
🙋♀️android:gravity
- RelativeLayout 범위 안에서 뷰를 어디에 배치할지 위치를 결정
gravity ="속성값"
속성값
- top : 상단에 배치
- bottom : 하단에 배치
- left : 좌측에 배치
- right : 우측에 배치
- center_vertical : 수직 중앙에 배치
- center_horizontal : 수평 중앙에 배치
- center : 정 중앙에 배치
뷰가 전체적으로 오른쪽에 배치
🙋♀️android:ignoreGravity
특정 자식뷰의 중력값을 무시하기 위해 사용하는 것
- 활용은 많이 하지 않음
ignoreGravity="@+타입/이름
ignoreGravity="@+id/view2
- id가 @id/view2인 뷰의 gravity를 무시
- id가 @id/view2인 뷰의 gravity를 무시
📍RelativeLayout.LayoutParams 속성
🙋♀️부모 뷰그룹과의 관계 배치 속성들
layout_alignParentLeft="true/false"
부모 영역 내 좌측에 배치
layout_centerHorizontal="true/false"
부모 영역 내 수평 중앙 배치
layout_alignParentRight="true/false"
부모 영역 내 우측에 배치
layout_alignParentTop="true/false"
부모 영역 내 상단에 배치
layout_alignParentVertical="true/false"
부모 영역 내 수직 중앙에 배치
layout_alignParentBottom="true/false"
부모 영역 내 하단에 배치
layout_CenterInParent="true/false"
부모 영역 내 정 중앙에 배치
아무 설정도 하지 않았을 경우 디폴트 값 : left/Top
기준뷰로의 활용
- 부모 뷰그룹과의 관계 배치 속성들은 기준뷰로 많이 활용됨
기준뷰
: 다른 자식뷰들을 배치하는데 기준이 되는 뷰- 첫 번째 뷰는 기준이 되는 다른 자식뷰들이 없기 때문에 부모 뷰그룹과의 관계로 배치를 하게 됨
🙋♀️자식 뷰 간의 관계 배치 속성들
layout_above="기준뷰 id"
기준뷰 상단 위에 배치
layout_alignTop="기준뷰 id"
기준뷰 상단에 자식뷰의 상단을 맞춰 배치
layout_below="기준뷰 id"
기준뷰 하단 아래에 배치
layout_alingBottom="기준뷰 id"
기준뷰 하단에 자식뷰의 하단을 맞춰 배치
layout_toLeftOf="기준뷰 id"
기준뷰 좌측 왼쪽에 배치
layout_alignLeft="기준뷰 id"
기준뷰 좌측에 자식뷰의 좌측을 맞춰 배치
layout_toRightOf="기준뷰 id"
기준뷰 오른쪽에 배치
layout_alignRight="기준뷰 id"
기준뷰 오른쪽에 자식뷰의 오른쪽을 맞춰 배치
layout_alignBaseline="기준뷰 id"
기준뷰의 텍스트에 자식뷰의 텍스를 맞춰 배치
- 모두 외우기는 힘들기 때문에 붙여놓고 계속 보고 사용하면서 자연스럽게 외우기
🙋♀️layout_alignWithParentIfMissing
관계에 의해 배치된 뷰들은 하나의 뷰가 사라지면서 관계가 끊어지면 전체적인 배치에 문제가 생길 수도 있음!!
❗Case 1 : 자식뷰 중 하나가 없어졌을 때
- view2가 사라졌지만 view3는 view1을 참조함
- 사라진 뷰의 참조를 따라감
❗Case 2 : 기준뷰가 사라졌을 때
- alignWithParentIfMissing = false
- 기준뷰를 참조하던 뷰가 기준뷰가 됨
- 부모 뷰그룹과의 관계에서 디폴트값인 Left/Top으로 위치가 이동됨
- view2를 참조하던 이후의 자식뷰들은 전체적인 배열이 무너지게 됨
- alignWithParentIfMissing = ture
- 사라진 기준뷰가 참조하던 뷰의 속성을 따라감
많이 사용하지는 않지만 RelativeLayout은 관계형 배치 방식이므로 관계가 끊어진 경우를 반드시 고려해야 함!!
📍레이아웃의 유연성과 관련된 속성들의 조합
RelativeLayout은 각 속성들의 조합으로 레이아웃 유연성을 지원함
ex)
layout_alienLeft
+layout_alienRight
= 적용된 자식뷰가 기준뷰의 너비만큼 늘어남layout_alignTop
+layout_alignBottom
= 적용된 자식뷰가 기준뷰의 높이만큼 늘어남layout_toLeftOf
+layout_alignTop
+layout_alignParentRight
= 기준뷰와 상단을 맞추고, 기준뷰 오른쪽부터 전체 레이아웃의 오른쪽 끝까지 자식뷰의 너비가 늘어남
<?xml version="1.0" encoding="utf-8"?>
<android.widget.RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/relative"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="View1" />
<Button
android:id="@+id/view2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/view1"
android:layout_toLeftOf="@id/view3"
android:text="View2" />
<Button
android:id="@+id/view3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="View3" />
</android.widget.RelativeLayout>
- 다양한 조합을 활용해서 원하는 부분을 가변적으로 만들어 유연하게 레이아웃을 만들 수 있음
Author And Source
이 문제에 관하여([Andriod_04] 대표적인 뷰그룹 _RelativeLayout), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zero9657/Andriod04-대표적인-뷰그룹-RelativeLayout저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)