layered

3. 리니어 레이아웃(LinearLayout) 본문

안드로이드/안드로이드 앱 프로그래밍

3. 리니어 레이아웃(LinearLayout)

스윗푸들 2023. 4. 13. 10:02

개념


상속 관계

 

 

박스 모델을 사용하는 레이아웃. 각각의 뷰를 박스라고 보고 한쪽 방향으로 쌓으면서 화면을 구성한다.

레이아웃 역시 뷰이므로 여러 레이아웃을 묶어서 사용할 수 있다.

따라서 가로 방향(Horizontal)으로 쌓을지, 세로 방향(Vertical)으로 쌓을지를 정하는 orientation 속성을 필수로 적어야 한다.

 

 

가로 레이아웃과 세로 레이아웃, 레이아웃 안의 레이아웃

 

메모

순차적으로 화면을 구성하는 데에는 유용하지만, 자식 뷰들의 크기를 정하는 건 좀 경직된 것 같다.

match_parent를 이용하면 자칫하다가 다른 뷰들을 다 가려버리기 때문에 wrap_content나 값을 직접 지정해야 하기 때문이다.

 

아, 그래서 layout_weight이 존재하는 것 같다(밑에 설명해 두었다)!

사실상 크기를 정한다기보다는 여유 공간을 분할해서 가져다 붙이는 느낌이긴 하지만, 그게 리니어 레이아웃만의 독특한 방법인 듯싶다.

 

이렇게 하면 리니어 레이아웃을 이용해서 상대 레이아웃의 대표적인 배치도 할 수 있다!

물론 이렇게 해도 되는지는 모르겠는데, 개인적으로 상대 레이아웃을 이용할 때보다 훨씬 깔끔한 것 같다.

 

속성 설명 XML 예시
baselineAligned 레이아웃 내의 뷰들을 텍스트의 바닥을 맞춰 정렬
텍스트 기준이므로 뷰의 배치가 이상해질 수 있음
android:baselineAligned="true"
*layout_weight 여유 공간을 분할
기본값은 1이다
android:layout_weight="1"

 

layout_weight

 

레이아웃 내에 있는 뷰들에게 적용되는 속성으로, 뷰들이 차지하고 남은 공간(전체 공간이 아니다!)을 가중치에 따라 분할하여 할당한다.

즉, 뷰의 원래 크기에 여유 공간을 분할한 만큼을 더한 것이 최종적으로 뷰의 크기가 된다.

 

이런 느낌!

 

따라서 여유 공간이 확실하게 있어야 제대로 적용되는 속성이기 때문에 뷰들을 wrap_content로 설정해서 여유 공간을 확보해 주는 것이 좋다.

다르게 말하면 0dp로 설정할 경우, 위의 코드처럼 전체 공간을 원하는 대로 분할할 수 있다는 의미이기도 하다!

 

https://developer.android.com/reference/android/widget/LinearLayout

 

LinearLayout  |  Android Developers

 

developer.android.com

 

'안드로이드 > 안드로이드 앱 프로그래밍' 카테고리의 다른 글

7. 상대 레이아웃(RelativeLayout)  (0) 2023.04.13
6. 위젯  (0) 2023.04.13
5. 텍스트뷰(TextView)  (0) 2023.04.13
2. 제약 레이아웃(ConstraintLayout)  (0) 2023.04.13
1. XML  (0) 2023.04.12