ref : Udemy [Android 12 및 Kotlin 개발 완전 정복] 섹션 6
분 단위로 나이를 표현해주는 계산기 앱을 만들어보자.
DOBCalc 라는 이름으로 프로젝트를 생성해준다.
ConstraintLayout
ConstraintLayout은 레이아웃을 구성할 때 뷰 위젯의 위치와 크기를 유연하게 조절할 수 있게 만들어주는 레이아웃이다.
레이아웃에 배치되는 뷰들에 여러 제약(Constraint) 을 적용해서 뷰의 위치와 크기를 결정하는데
예를들어 특정 뷰의 왼쪽 사이트를 지정된 뷰의 오른쪽 사이드에 맞추는 등의 제약들이 ContraintLayout이 가지는 하나의 레이아웃 속성이 된다.
일단 ContraintLayout 의 속성의 이름은 기본적으로 layout_constraint로 시작함.
그래서 예를 들어 왼쪽 사이드를 대상 뷰의 오른쪽 사이드에 배치하는 건 다음과 같이 쓴다.
제약은 많은 종류가 있다. 기본적인 설명은 여기서 참고할 수 있을 것 같다.(https://developer.android.com/reference/android/support/constraint/ConstraintLayout)
결론적으로 ContraintLayout 을 사용하면 플랩 뷰 계층 구조(중첩 뷰가 없다는 의미)로 크고 복잡한 레이아웃을 만들 수 있다.
Relative Layout 안드로이드 스튜디오의 Layout Editor 와 함께 사용하기가 쉽다.
또한 Layout Editor 의 비주얼 도구에서 직접 ContraintLayout 의 모든 기능을 사용할 수 있어서
XML 따로 수정 안해도 드래그 앤 드롭만 사용해서 ContraintLayout 으로 레이아웃을 빌드할 수 있다.
relative layout
RelativeLayout 은 부모뷰 또는 자식 뷰의 상대적 위치 관계를 정의해서 UI를 배치하는 Layout 이다.
android:layout_width="wrap_content"
wrap_content은 아이템이 화면을 다 차지하지 않도록 하는 좋은 습관
linear layout
LinearLayoutl 은 가로 또는 세로 방향으로 View가 순서대로 배치된다.
이제 앱 화면을 구성해보자.
gravity를 center_horizontal 로 설정한 모습.
ctrl + space 를 누르면 넣을 수 있는 속성이 떠서 쉽게 고를 수 있다.
orientaion 을 vertical 로 설정했다.
아이템들이 겹치지 않고 아래로 나열되도록 할 수 있다.
background 의 색을 바꿔보았다.
textStyle 도 bold 로 설정해서 굵게 만들어줬다.
match_parent 로 했을 때와 wrap_content로 설정했을 때의 차이를 볼 수 있다.
ref :