- 안드로이드 애플리케이을 개발할 시 화면의 구성해야 한다. - 안드로이드는 화면을 구성할 때 배치되는 뷰들이 어디에 배치된다는 좌표를 설정하지 않는다.
- 안드로이드는 좌표가 아닌 배치되는 모양을 결정하게 된다. - 개발자가 배치되는 모양을 결정하고 뷰들을 배치하면 안드로이드 OS가 단말기에 적합한 좌표를 계산하고 뷰들을 배치하게 된다.
Parent와 Child
- 안드로이드는 화면을 구성하기 위해 layout 을 먼저 배치하고 그 위에 다른 View 들을 배치하게 된다. - 이 때 layout 을 Parent라고 부르고 배치되는 View 들을 Child라고 부른다. - 모든 View 들은 단 하나의 Parent를 가질 수 있으며 모든 layout 은 다수의 Child를 가질 수 있다.
< Layout들의 공통속성 >
id : View를 지칭하기 위해서 사용하는 이름 한 화면에서 같은 id가 있으면 안된다. layout_width : 가로 길이. (wrap_content or match_parent or dp 단위의 크기) layout_height : 세로 길이 (wrap_content or match_parent or dp 단위의 크기) wrap_content : 자기 자신을 완벽하게 보여줄 수 있는 최소의 크기. 공간이 부족할 경우 화면에서 짤린다. match_parent : 부모의 크기에 꽉 채워준다. 공간이 부족할 경우 계속 축소된다. padding : 내부의 여백 margin : 외부의 여백 layout_gravity : layout 내에서 자신의 정렬 위치
Linear Layout
방향성을 가지고 view 를 배치하는 layout 이다. 가로 혹은 세로방향으로 배치할 수 있으며 한 칸에 하나의 view 만 배치할 수 있다. 안드로이드에서 가장 많이 사용하는 layout 으로 여러 LinearLayout을 조합하여 다양한 모양을 만들 수 있다.
1. LinearLayout의 주요 속성 - orientation: 뷰가 배치되는 방향을 설정 vertical: 세로 방향 horizontal(생략) : 가로 방향 2. LinearLayout에 배치되는 View의 주요 속성 - weight: 배치는 뷰가 차지할 공간 비율
Frame Layout
내부에 배치된 View 들이 같은 자리에 계속 배치되는 layout 이다. 화면을 구성하기 보단 탭 등과 같은 기능을 만들 때 사용하는 경우가 많다.
<FrameLayout 주요속성>
주요 속성은 없다. FrameLayout에 배치되는 view 는 모두 좌측 상단에 배치된다. margin 속성이나 layout_gravity 속성을 이용해 배치되는 위치를 결정하여 사용한다.
Constraint Layout
RelativeLayout 을 개선한 layout 으로 RelativeLayout 보다 유연하게 화면을 구성할 수 있다
1. ConstraintLayout에 배치되는 View의 주요 속성 - 부모 혹은 다른 뷰와의 관계를 설정한 제약 조건 속성들