본문 바로가기

Programming

[Android] Layout - RelativeLayout, AbsoluteLayout, FrameLayout, TableLayout

728x90
반응형

RelativeLayout (랠러티브 레티아웃)

레이어와 레이어, 레이어와 뷰, 뷰와 뷰... 등등의 관계를 지정하는 레이아웃이다. 여기서 말하는 관계란 ~~~의 아래, ~~~위 위, ~~~왼쪽, ~~~의 오른쪽과 같은 형태로 위치를 지정하는 것이다. 이러한 위젯끼리 관계를 지정해 주기 위해서는 ID를 필요로 한다.


▶주요 속성

● layout_above : ~의 위에 위치

● layout_below : ~의 아래에 배치

● layout_toLeftOf : ~왼쪽에 배치

● layout_toRightOf : ~의 오른쪽에 배치

● layout_alignLeft : ~와 왼쪽 변을 맞춤

● layout_alignTop : ~와 윗쪽 변을 맞춤

● layout_alignRight : ~와 오른쪽 변을 맞춤

● layout_alignBottom : ~와 아래쪽 변을 맞춤

● layout_alignParentLeft : true 이면 부모와 왼쪽 변을 맞춤

● layout_alignParentTop : true 이면 부모와 윗변을 맞춤

● layout_alignParentRight : true 이면 부모와 오른쪽 변으 맞춤

● layout_alignParentBottom : true 이면 부모와 아랫변을 맞춤

● layout_alignBaseline : ~와 베이스 라인을 맞춤

● layout_alignWithParentIfMissing : layout_toLeftOf 등의 속성에 대해 앵커가 발견되지 않으면 부모를 앵커로 사용  // 개인적으로 재미있지만 쓸모없는 기능으로 보인다.

● layout_centerHorizontal : true 이면 부모의 수평 중앙에 배치한다.

● layout_centerVertical : true 이면 부모의 수직 중앙에 배치한다.

● layout_centerInParent : true 이면 부모의 수평, 수직 중앙에 위치한다.

와 같은 속성을 가진다.

리소스 컴파일러는 빠른 배치를 위해 위젯 간의 관계를 한번에 읽는다. 그렇기 때문에 특정 뷰가 가른 뷰의 위치에 종속적일 때 기준이 되는 뷰를 먼저 정의 해야한다. 


AbsoluteLayout (앱솔루트 레이아웃)

관계나 순서에 상관없이 지정한 절대좌표 위에 자식뷰를 배치하는 레이아웃이다. layout_x, layout_y의 속성 으로 값을 주면 부모의 좌 상단을 기준으로 절대 좌표에의해 뷰가 배치된다. 

위치적으론 확실 하지만 디바이스에 따라 위치가 바뀔수 있다는 위험이 있다. 그렇게 때문에 잘 사용하지 않는다. 기본적으로 이것을 쓰는것 보다는 마진을 사용하여 위치하는게 이득이다.



FrameLayout (프래임 레이아웃)

뷰를 배치하는 규칙이 없는 레이아웃이다. 단순히 모든 자식 뷰를 왼쪽 상단에 배치하며 모두 배치한다. 그렇기 때문에 여러개의 뷰를 올리면 겹쳐서 보이게 된다.

단순하지 2가지 면에서 실용성이 있다.


- ViewGroup의 서브 클래스로 레이아웃의 일종이므로 자식들을 관리 할 수 있다. addView, removeView등의 메소드로 뷰를 추가하거나 삭제가 가능하고 getChildCount 메소드 자식 뷰의 개수를 셀 수 있다. 

- 비록 겹쳐서 표시 되지만 남어지는 숨기고 당장 사용할 자식 하나만 선택적으로 나타나게 할 수 있다. 자식 뷰의 보임 상태는 개별 뷰의 visivility 속성을 사용하여 실행 중에도 조건에 따라 뷰의 보임 상태를 변경할 수 있다. 


▶ foreground

자식의 위쪽에 얹히는 이미지를 지정한다. 반투명한 색상을 사용할 수도 있고 이미지를 사용할 수도 있다.


▶ foregroundGravity

전경의 이미지를 배치할 방법을 지정한다. 디폴트 값으로는 fill이며 프레임 안에 전경이 가득차게 확대된다. 간운데만 전경을 둔다거나 한쪽에 밀착시켜 놓을 수 있다.


▶ measureAllChildren

모든 자식의 크기를 다 측정할 것인지 아니면 보이거나 숨겨진 자식의 크키만 적용할 것인지를 지정한다. 디폴트는 false이기 때문에 GONE 상태의 자식 크기는 측정할려면 true 값으로 변경시켜야 할 것이다.


TableLayout (테이블 레이아웃)

테이블 레이아웃은 표 형식으로 자식을 배치하는 레이아웃이다. 테이블은 여러개의 TableRow의 갯수가 배치되고 TableRow의 갯수로 행의 갯수가 정해진다. 그리고 TableRow안에 자식을 셀이라고 하며 이 자식들의 갯수로 열의 갯수가 정해진다. 행이 여러개일때는 셀이 가장 많은 행의 개수로 기준이 된다.

즉 만들어지는 표는 

(TableRow의 갯수) X (TableRow중 가장 많은 셀을 갯수)

의 표로 생성이 된다.









반응형

'Programming' 카테고리의 다른 글

[Android] Layout Parameter  (0) 2013.10.03
[Android] R Class  (0) 2013.10.01
[Android] Layout - LinearLayout  (0) 2013.09.29
[Android] View  (0) 2013.09.29
[Info] 프로그래밍 언어  (0) 2013.06.15