본문 바로가기
프로그래밍/Android

RelativeLayout 상대위치 속성 4가지

by Mr-후 2018. 9. 6.
반응형


RelativeLayout 상대위치 속성 4가지


RelativeLayout의 경우 화면에 배치된 뷰를 기준으로 뷰 자신의 위치를 지정하는 레이아웃이다. 기본적으로 RelativeLayout은 orientation을 지정할 수 없기 때문에 속성을 지정하지 않으면 문제가 된다. 


상대 위치를 지정하는 속성 4가지. 


android:layout_above :     기준 뷰의 윗부분에 자신을 위치시킴

android:layout_below :     기준 뷰의 아래부분에 자신을 위치시킴

android:layout_toLeftOf:  기준 뷰의 왼쪽에 배치

android:layout_toRightOf: 기준 뷰의 오른쪽에 배치 


4가지 속성값의 기준 뷰의 id를 참조한다. 

<?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">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/icon"
android:adjustViewBounds="true"
android:src="@drawable/img_profile_emotion_03_n"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/name"
android:layout_toRightOf="@id/icon"
android:text="홍길동"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/content"
android:layout_below="@id/name"
android:layout_toRightOf="@id/icon"
android:text="안녕하세요 잘 지내시는거죠?"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/date"
android:layout_toRightOf="@id/name"
android:text="18.09.06"/>
</RelativeLayout>


또다른 속성 중에 중요한 속성은 align 속성이다. 





각각의 뷰들이 서로간에 간격과 높이, 여백등을 조절하기 위해서는  다음 5가지 align속성을 알고 있어야 한다. 


android:layout_alignTop:        기준 뷰와 윗부분을 정렬

android:layout_alignBottom:    기준 뷰와 아랫부분을 정렬

android:layout_alignLeft:         기준 뷰와 왼쪽을 정렬

android:layout_alignRight:        기준 뷰와 오른쪽을 정렬

android:layout_alignBaseline:     기준 뷰와 텍스트 기준선을 정렬

<?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">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/icon"
android:adjustViewBounds="true"
android:src="@drawable/img_profile_emotion_03_n"
android:layout_margin="5dp"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/name"
android:layout_toRightOf="@id/icon"
android:text="홍길동"
android:layout_margin="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/content"
android:layout_below="@id/name"
android:layout_alignLeft="@id/name"

android:text="안녕하세요 잘 지내시는거죠?"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/date"
android:layout_toRightOf="@id/name"
android:layout_alignBaseline="@id/name"
android:text="18.09.06"/>
</RelativeLayout>

마지막으로 부모뷰로부터 자신의 뷰를 정렬하기 위한 속성이다. 
RelativeLayout으로 뷰를 배치할 때 특정 뷰를 RelativeLayout영역의 상하좌우로 밀 수 있는 속성이 alignParentXXX 패턴을 가지는 속성들이다. 

android:layout_alignParentTop:        부모의 윗부분에 뷰의 상단을 위치
android:layout_alignParentBottom:  부모의 아랫부분에 뷰의 하단을 위치
android:layout_alignParentLeft:       부모의 왼쪽에 뷰의 왼쪽을 위치 
android:layout_alignParentRight:     부모의 오른쪽에 뷰의 오른쪽을 위치
android:layout_centerHorizontal:     부모의 가로 방향 중앙에 뷰를 위치
android:layout_centerVertical:         부모의 세로 방향 중앙에 뷰를 위치
android:layout_centerInParent:         부모의 가로세로 중앙에 뷰를 위치

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/date"
android:layout_alignParentRight="true"
android:padding="5dp"
android:text="18.09.06"/>


반응형