안드로이드에서 가장 간단한 레이아웃 중 하나
자식 뷰들을 쌓는(Stack) 방식으로 배치한다.
액자(Frame) 처럼 화면에 표시될 View를 바꿔가면서 표시하기 위해 사용한다.

layout_width와 layout_height 값이 wrap_content 인 경우

프레임 레이아웃은 단 한개의 고유 속성만 가지고 있다.
measureAllChildren

measureAllChildren의 속성값을 "true"로 설정하면 Visibility 속성이 "Gone"인 자식뷰의 크기를 측정한다.
예시처럼 Frame Layout의 높이/넓이를 wrap_content 로 설정해 놓았을 때
View 1의 크기가 제일 컸다면, View1의 크기에 Frame Layout의 크기가 맞춰지는데,
measureAllChildren 값을 "true"로 설정하면
-> View 1의 Visibility 가 "Gone"으로 바뀌었을때 View 1의 크기를 그대로 유지하고
measureAllChildren 값을 "false"로 설정하면
-> View 1의 Visibility 가 "Gone"으로 바뀌었을때 Frame Layout의 크기가 View 2 에 맞춰진다.
Frame Layout 에서 자식 뷰 위젯의 위치를 조절하기 위해서 gravity 속성을 사용한다.

해당 이미지는 각 속성값이 가리키는 위치를 나타낸 것이다.

해당 이미지는 위에서 보여준 gravity 속성들을 사용했을 때
Frame Layout에서 자식뷰의 위치가 어떻게 되는지 보여주기 위한 예시이다.
Frame Layout의 특징 부분에서 언급했듯이 특별한 의도가 없다면 프레임 레이아웃에는 한번에 한가지의 뷰만 표시되는것이 권장 되는데, 프레임 레이아웃에 여러개의 자식뷰를 쌓아서 배치는 해두고, 그 중 특정 조건이나 시간에 따라 한가지가 보이도록 하는 방식으로 주로 사용하게 된다.
표시될 자식뷰를 설정하는 두가지 방법이 있다.
1. 프레임레이아웃이 무조건 하나의 자식뷰만 가지도록 만드는 방법
2. 프레임 레이아웃의 자식뷰들의 visibility 속성 활용하는 방법
addView() removeView() 함수를 사용하는 방법이다.
이 방법은 해당 함수들을 사용해서 Frame Layout이 하나의 자식뷰를 가지도록 만드는 방식으로 표시될 자식뷰를 설정한다.
addVIew() 함수 설명
removeView() 함수 설명
xml에서 레이아웃 파일을 작성할 때 Frame Layout 의 자식 뷰 중 화면에 표시할 뷰의 Visibility 값만 "visible"로 설정하고, 나머지는 "invisible"로 설정하는 방법이다.
