IT/안드로이드

[8] 안드로이드 Layout 종류

Lyk 2023. 10. 18. 21:42
728x90
반응형

LinearLayout

- 방향성을 가지고 view 를 배치하는 layout

- 가로 혹은 세로 방향으로 배치

- 안드로이드에서 가장 많이 사용하는 layout 으로 여러 LinearLayout 을 조합하여 다양한 모양을 만들 수 있다.

[ 주요 속성 ]

orientation : 배치되는 방향을 결정한다.

weight : LinearLayout 안에 배치되는 View들의 비율을 설정한다. (배치하고 남는 공간을 가져가는 비율)

match_parent : 부모길이에 맞춤, 전체길이의 얼마만큼 가져갈것인지

wrap_content : 기본 크기 외에 남는 공간을 얼마만큼 가져갈것인지

 

LinearLayout 은 보통 vertical을 많이 사용.(스마트폰은 세로가 더 길어서)


FrameLayout

- 내부에 배치된 view 들이 같은 자리에 계속 배치되는 layout

- 화면을 구성하기 보단 탭 등과 같은 기능을 만들 때 주로 사용

- FrameLayout 에 배치되는 view 들은 모두 좌측 상단에 배치

- margin 속성이나 layout_gravity 속성을 이용해 배치되는 위치 결정

 

FrameLayout 은 잘 사용하지 않는 레이아웃. view 들을 중첩해서 사용 가능


TableLayout

- 표를 작성하는 방법으로 view 를 배치하는 Layout

- TableLayout 안에 하나의 줄을 의미하는 TableRow가 있다.

- TableRow 내에 view를 배치하면 view의 개수만큼 칸이 생겨난다.

[ 주요 속성]

stretchColums : TableRow 안의 view들이 가로로 늘어날 비율을 설정

  -> 가로길이에 layout_width 를 쓰지 않고 이 속성을 사용한다.

  -> ex1 ) 0,1 => 0번째 1번째만 꽉차게

  -> ex2 ) * => 모든 컬럼 비율이 동일.

  -> 단, 이 뷰를 완벽히 구성할 수 있는 최소사이즈 이하로는 줄어들지 않아, * 로 지정해도 화면이 잘리는 경우가 있다.

shrinkColums : TableRow 안의 view들이 화면에 보일 수 있도록 줄어들게 한다.

  -> *을 넣으면 모두 똑같이 줄어듦

layout_column : view가 배치될 위치를 선정. 위치하고 싶은 칸의 인덱스 번호

layout_span : view가 배치될 칸의 개수를 정한다. colspan 과 비슷한 역할. *참고로 rowspan 같은 기능은 없음


RelativeLayout

- Parent 나 다른 view 와의 관계를 설정하여 배치하는 layout

- Relative Layout 에는 특별한 속성이 없지만 배치되는 view 들의 속성을 이용해 배치를 결정

- 현재는 legacy 탭에 있음. 안드로이드 초창기엔 지원했으나. 지금은 다른걸 쓰라고 권장함. 하지만 옛날소스를 유지보수하게 될 수 있으니 알고 있어야함

[ 주요 속성 ]

layout_alignParentTop : 자신의 상단을 parent 의 상단 부분과 일치
layout_alignParentBottom : 자신의 하단을 parent 의 하단 부분과 일치
layout_alignParentLeft : 자신의 좌측 부분을 parent 의 좌측 부분과 일치
layout_alignParentRight : 자신의 우측 부분을 parent 의 우측 부분과 일치
layout_alignWithParentMissing : 다른 view 를 정렬 기준으로 설정하였을 경우 기준으로 설정한 view 가 없을 때는 parent 를 기준으로 정렬
layout_centerHorizontal : 세로 방향의 중앙에 정렬
layout_centerVertical : 가로 방향의 중앙에 정렬
layout_centerInParent : 가로 세로 모두 중앙에 정렬
layout_alignTop : 자신의 상단 부분을 지정된 view 의 상단 부분에 일치
layout_alignBottom : 자신의 하단 부분을 지정된 view 의 하단 부분에 일치
layout_alignLeft: 자신의 좌측 부분을 지정된 view 의 좌측에 일치
layout_alignRight : 자신의 우측 부분을 지정된 view 의 우측에 일치
layout_alignBaseline : 자신의 Baseline 부분과 지정된 view 의 Baseline 을 일치
layout_above : 지정된 view 상단에 배치
layout_below : 지정된 view 하단에 배치
layout_toRightOf : 지정된 view 우측에 배치
layout_toLeftOf : 지정된 view 좌측에 배치


ConstraintLayout

- RelativeLayout 을 개선한 layout 으로 RelativeLayout 보다 유연하게 화면을 구성(초기부터 있던 레이아웃은 아님)

[ 제약조건 ]

- ContraintLayout 은 RelativeLayout 처럼 부모와의 관계나 다른 View 와의 관계를 설정하게 된다.
1. 실선 제약 조건 : 지정된 기준으로부터 얼마큼 떨어진 위치에 있는지 좌표를 설정한다.
2. 스프링 제약 조건 : 지정된 기준으로부터 얼만큼 떨어진 위치에 있는지 비율을 설정한다.


GridLayout

- Grid 를 설정하여 View 를 배치하는 Layout
- TableLayout 을 보완하기 위해 제공되는 Layout

(TableLayout 을 보완하기 위해 만들어졌으나, 많이 사용하지 않아 현재는 Legacy 로 빠져 있다)

[ 주요 속성 ]

rowCount : 그리드 레이아웃의 줄의 개수
columnCount : 그리고 레이아웃의 칸의 개수

[ GridLayout 에 배치되는 View 의 주요 속성 ]
layout_column : View가 배치될 칸의 위치 (0 부터 시작)
layout_row : View 가 배치될 줄의 위치 (0 부터 시작)
layout_columnSpan : View 가 차지할 칸의 수
layout_rowSpan : View 가 차지할 줄의 수
layout_columnWeight : 남은 공간을 차지할 가로 비율
layout_rowWeight : 남은 공간을 차지할 세로 비율

(단 layout_columnSpan 만 쓰면 칸은 차지하지만 막상 내부의 view의 길이는 변함이 없음. 그래서 layout_columnWeight 의 비율도 1로 해주어야함, row 도 마찬가지)


Include Other Layout

- Layout 에서 다른 Layout 을 포함시킬 수 있는 개념
- 다수의 화면을 구성할 때 중복되는 부분이 있을 경우 사용(헤더나 푸터같은걸 만들때 쓸 듯)

- layout : 삽입할 화면의 데이터를 정의한 layout 파일


Space

- Space 는 Layout 은 아니지만 Layout 을 이용해 화면을 구성할 때 보조 수단으로 사용하는 View
- 화면을 구성할 때 여백이 필요할 경우 사용

-> 레이아웃은 아니지만 화면구성 시 자주사용하는 view 라서...

728x90
반응형