[Android] xml 레이아웃(2) - Linear Layout

문날·2023년 7월 16일

⬛ Linear Layout

linear layout은 view를 수평(horizontal) 혹은 수직(vertical)방향으로 배치할 수 있는 레이아웃이다. orientation 속성을 사용하여 배치 방향을 정할 수 있다.

android:orientation = "vertical": 하위 뷰들을 수직방향으로 배치android:orientation = "horizontal": 하위 뷰들을 수평방향으로 배치

◼ Layout weight

Linear Layout은 android:layout_weight 속성을 사용하여 각각의 자식들에게 가중치(weight)을 할당하는것을 지원한다. 이 속성은 view가 화면에서 얼마만큼의 공간을 차지하느냐에 따라 중요도 값을 할당한다.

android:layout_weight = "1" : 1이 들어가는 위치에 큰 숫자가 들어갈 수록 가중치가 커진다. 기본 가중치(default)는 0이다.

◾ 균등 분포

각 하위 요소가 화면에서 동일한 크기의 공간을 사용하는 선형 레이아웃을 생성하려면, 각 view의 android:layout_height를 0dp로 설정한다(horizontal인 경우). 그런 다음 각 뷰의 android:layout_weight를 1로 설정한다.

◾ 비균등 분포

하위 요소가 화면에 다른 크기의 공간을 사용하는 Linear Layout을 생성할 수 있다.
(예시)
3개의 text field가 있다. 그 중 2개의 가중치를 1로 선언하고, 다른 하나의 가중치는 지정하지 않을 경우, 세번째 text field는 확장되지 않는다. 다만, 세번째 text field가 필요한 영역만 차지하게 된다.(나머지 2개의 text field는 균등하게 남은 공간을 채우도록 확장된다.)

◼ Layout gravity

Linear Layout은 android:gravity 속성을 사용하여 모든 하위 뷰에 대한 중력 방향(배치 방향)을 결정한다. 반면 android:layout_gravity 속성은 해당 group view에 속하는 하위 view들이 가지는 속성으로, view group의 gravity속성에 의해 결정된 원래 자신 위치에서의 중력 방향(배치 방향)을 결정한다.



⬛ 실습

Linear Layout을 사용해 간단한 레이아웃을 구성해보았다.
(비균등 분포, gravity, edit text, button 사용)

[Palette]

[Code]

◼ 코드 설명

  • layout_height, layout_width
    모든 view 들은 아래의 속성이 있어야만 한다.

    android:layout_width="match_parent"
    android:layout_height="wrap_content"

    • match_parent : 부모의 길이에 맞춘다. view의 경우, view를 감싸고 있는 레이아웃의 width와 height에 맞춰진다. 보통 match_parent는 "너비, 혹은 높이가 화면 전체 길이" 를 의미한다.
    • wrap_content : view에 입력할 글자 혹은 이미지 크기에 맞게 설정 된다.

  • Edit Text
    - android:hint : edit text에 어떤 형식이나 값을 입력하라고 알려주는 가이드글
    - android:importantForAutofill : 자동완성을 사용할 것인지 사용하지 않을 것인지 정한다
    - android:inputType : 입력 타입을 지정한다.(ex. text, number,...)

참고
https://developer.android.com/develop/ui/views/layout/linear?hl=en

profile
개발 공부

0개의 댓글