비트(bit)주세요

레이아웃 - 리니어 레이아웃 본문

CS/안드로이드

레이아웃 - 리니어 레이아웃

yglee730 2021. 9. 8. 21:19
728x90

 

레이아웃 이름 설명
제약 레이아웃 제약 조건 기반 모델
제약 조건을 사용해 화면을 구성하는 방법
안드로이드 스튜디오에서 자동으로 설정하는 디폴트 레이아웃
리니어 레이아웃 박스 모델
한 쪽 방향으로 차례대로 뷰를 추가하여 화면을 구성하는 방법
뷰가 차지할 수 있는 사각형 영역을 할당
상대 레이아웃 규칙 기반 모델
부모 컨테이너나 다른 뷰와의 상대적 위치로 화면을 구성하는 방법
프레임 레이아웃 싱글 모델
가장 상위에 있는 하나의 뷰 또는 뷰그룹만 보여주는 방법
여러 개의 뷰가 들어가면 중첩하여 쌓게 됨. 가장 단순하지만 여러 개의 뷰를 중첩한 후 각 뷰를 전환하여 보여주는 방식으로 자주 사용함
테이블 레이아웃 격자 모델
격자 모양의 배열을 사용하여 화면을 구성하는 방법
HTML에서 많이 사용하는 저열ㄹ 방식과 유사하지만 많이 사용하지는 않음

 

리니어 레이아웃 형식

 

 

뷰의 영역 관련 용어

 

 

리니어 레이아웃 적용하기

1) 새 프로젝트 생성(굳이 안해도 됨)

 

 

2) [ContstraintLayout] 칸에서 마우스 우클릭 후, [Convert View...] -> [LinerLayout] 클릭

LinearLayout 적용 후 모습,

현재 [horizontal] 모드여서 버튼을 여러개 가져다 놓아도 수평으로 배치가 됨

 

3) 우측 [Common Attributes] 칸에서 [vertical] 모드로 변경

버튼들이 수직으로 정렬된 모습

 

 

필요한 만큼의 공간만 할당하기

 

버튼을 하나만 했을때 버튼 하나가 공간을 다 차지함 (horizontal 모드)

[match-parent]가 적용되었기 때문임

 -> 부모 레이아웃인 [LinearLayout]이 갈 수 있는 영역을 전부 차지함

 

[wrap_content]로 변경해본다.

   -> 안의 내용에 따라 공간이 할당된다.

 

공간이 줄어든 모습이다.

 

텍스트의 내용 양의 따라 차지하는 공간이 변한다

 

 

[Vertical] 모드에서 [match_parent]로 바꾸면?

 

그에 맞게 공간이 늘어난다.

 

 

공간 분할하기

 

일정 비율로 버튼들을 정렬하려면 가로방향으로 정렬시키는 것이기 때문에

[layout_width]는 0dp로 주고

[layout_weight]는 1로 줍니다. 

    -> 버튼들이 각각 1:1:1 비율로 정렬

 

 

버튼 안에서 텍스트 위치 변경하기

 

버튼을 클릭하고 우측 속성에서 [gravity]를 찾는다.

쉽게 찾으려면 우측 상단에 돋보기 버튼을 누르고 검색한다. 

 

[bottom]에 체크하면 글씨가 아래로 내려간다.

 

그 상태에서 [right]를 체크하면 오른쪽으로 간다.