레이아웃은 앱에서 사용자 인터페이스를 위한 구조를 정의하며, 레이아웃의 모든 요소는 View와 ViewGroup 객체의 계층 구조를 사용하여 빌드된다.
모든 위젯은 View 클래스의 인스턴스이거나 View의 서브 클래스(ex TextView, Button)중 하나의 인스턴스다.
뷰그룹(ViewGroup)은 View의 일종이며, 다른 뷰를 포함하고 배치해 화면에 보여주지만 그 자신은 화면에 나타나지 않는다. 레이아웃도 뷰그룹이다.
위젯은 view 객체의 계층 구조에 존재하며, 이것을 뷰 계층 구조라고한다.
아래 이미지는 UI 레이아웃을 정의하는 뷰 게층 구조의 예이다.
위 예시에서 view 객체는 일반적으로 위젯이라 하고, ViewGroup 객체는 레이아웃이라고 한다.
안드로이드에서 레이아웃을 선언하는 방법은 두 가지가 있으며, 아래와 같다.
위와 같은 방법을 통해 xml에서 UI를 선언하면 동작을 제어하는 코드로 부터 앱표현을 분리할 수 있으며, xml에서 선언한 레이아웃을 런타임에 수정할 수 있다.
https://developer.android.com/guide/topics/ui/declaring-layout?hl=ko