일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 상대 레이아웃
- 액션바
- 데이터베이스
- 드로어블
- edwith
- 아이폰
- 자바
- 프로그래밍
- 텍스트뷰 자동 스크롤
- 제약 레이아웃
- 부스트코스
- 안드로이드
- 스낵바
- 테이블_레이아웃
- 안드로이드 스튜디오
- SceneDelegate
- 리니어 레이아웃
- IOS
- textview auto scroll
- Swift
- 안드로이드_프로그래밍
- 서비스
- 코드리뷰
- 수명주기
- 레이아웃
- 텍스트뷰 스크롤
- 뷰
- RecyclerView
- 코틀린
- 프로젝트
- Today
- Total
듀다의 성장개발로그
[부스트코스] 안드로이드 프로그래밍 04 - 리니어 레이아웃 본문
이번 포스팅에서는 리니어 레이아웃에 대해 설명드리겠습니다.
리니어 레이아웃은 정해진 방향에 따라 위젯을 차례대로 배치하는 레이아웃입니다.
위젯을 배치할 방향이 필수 속성이기 때문에 반드시 지정해주어야 합니다.
orientation을 vertical로 설정했을 때 맨 위부터 세로 방향으로, horizon으로 설정했을 때 맨 왼쪽부터 가로 방향으로 배치할 수 있습니다. 배치한 방향과 수직 방향의(vertical에서의 가로와 horizon에서의 세로)여백은 배치된 뷰의 마진입니다. 해당 영역은 배치된 뷰의 영역에 포함되기 때문에 뷰를 해당 영역 내에서 자유롭게 배치할 수 있습니다.
뷰의 영역 안에서 배치할 때 gravity라는 속성을 활용할 수 있습니다.
gravity, 중력이라는 뜻이죠? 중력이 물체를 끌어당기듯 뷰나 뷰 안의 내용을 한 방향으로 붙일 수 있습니다.
뷰를 정렬하는 데에는 layout gravity라는 속성이 사용됩니다.
왼쪽 정렬, 오른쪽 정렬 등의 방향으로 뷰를 배치할 수 있습니다.
뷰 안의 내용을 정렬하는 데에는 layout이 붙지 않은 gravity라는 속성이 사용됩니다.
layout gravity와 마찬가지로 뷰 안의 글자 등을 한 방향으로 정렬할 수 있습니다.
그러면 어떻게 리니어 레이아웃을 사용할까요? 최상위 레이아웃 안에 리니어 레이아웃을 넣는 것은 버튼을 추가할 때처럼 마우스로 끌어다 놓을 수 있지만, 이미 추가된 레이아웃을 리니어 레이아웃으로 변경하여 사용하려면 소스코드를 변경해주어야합니다.
프로젝트를 처음 만들었을 때 기본 레이아웃은 제약 레이아웃입니다. 위와 같은 소스코드로 되어 있습니다. 가운데에 Hello World!라는 텍스트뷰가 하나 들어있는 상태입니다.
리니어 레이아웃으로 변경하기 위해서는 먼저 가장 바깥쪽의 태그를 LinearLayout으로 변경합니다.
그러면 아래와 같은 코드가 되는데, 제약 레이아웃의 속성은 제거하고 리니어 레이아웃의 필수 속성을 추가해주어야 합니다. 빨갛게 표시된 부분을 지우고 TextView 태그 윗줄에 android:orientation="vertical" 또는 android:orientation="horizon"을 추가합니다.
이렇게 수정하고 나면 (수직) 리니어 레이아웃으로 변경이 완료된 것입니다. 변경이 제대로 적용되었는지 디자인 탭에서 확인해봅니다.
정가운데에 위치하던 Hello World!가 왼쪽 모서리로 이동했습니다. 다른 버튼을 추가하면 오른쪽 화면처럼 아래로 쌓이게 됩니다. 제약 레이아웃이 리니어 레이아웃으로 변경되었습니다.
- 리니어 레이아웃 안에 리니어 레이아웃을 포함시키면 어떤 화면이든 다 만들 수 있는 걸까요?
- 보이는 모습은 다 만들 수는 있을 거라고 생각합니다. 그러나 필요한 속성을 가진 레이아웃을 적절히 사용할 때 더욱 효율적인 프로그래밍이 될 거라고 생각합니다. - 화면의 위, 아래 끝에 작은 뷰를 배치하고 싶다면 리니어 레이아웃을 쓰는 것보다 더 좋은 방법이 있을까요?
- 상대 레이아웃을 사용해도 효과적으로 사용할 수 있을 것 같습니다.
리니어 레이아웃에 관한 포스팅은 여기까지입니다. [링크]를 통해 부스트코스에 방문하시면 리니어 레이아웃 뿐만 아니라 다른 레이아웃에 관해, 혹은 레이아웃 전반에 관한 내용을 학습할 수 있습니다.
'안드로이드 > 부스트코스' 카테고리의 다른 글
[부스트코스] 안드로이드 프로그래밍 - 프로젝트 A 코드 리뷰 (0) | 2020.02.12 |
---|---|
[부스트코스] 안드로이드 프로그래밍 05 - 드로어블 (0) | 2020.02.04 |
[부스트코스] 안드로이드 프로그래밍 03 - 제약 레이아웃과 상대 레이아웃 (0) | 2020.02.03 |
[부스트코스] 안드로이드 프로그래밍 02 - 뷰와 레이아웃 (0) | 2020.02.03 |
[부스트코스] Tip! imports on the fly를 활성화해야 하는 이유 (0) | 2020.02.03 |