출처: http://www.edwith.org/boostcourse-android/lecture/17039/



뷰 (View)

뷰는 안드로이드 기본 화면을 구성하는 모든 기본 화면 구성요소를 말합니다.

눈에 보이지 않는 것도 있긴 하지만 눈에 보이는 각각의 것들을 뷰라고 이해하면 쉽습니다.

뷰 중에 눈에 보이지 않는 것들이 있다 보니 눈에 보이는 것들은 위젯, 눈에 보이지 않는 것들은 레이아웃이라고 구분합니다.

레이아웃은 그 안에 다른 뷰들을 담아둘 수 있는데 레이아웃도 뷰를 상속하여 정의되었기 때문에 레이아웃 안에 레이아웃도 담을 수 있습니다.

레이아웃 안에 레이아웃, 다시 그 레이아웃 안에 레이아웃을 넣는 방식을 사용하면 아주 복잡한 화면이 만들어지겠죠?

다른 뷰들을 담아둘 수 있도록 뷰그룹을 정의해두었는데 레이아웃은 이 뷰 그룹을 상속합니다.

아래 계층도를 보면 좀 더 쉽게 이해가 될 겁니다.

뷰의 크기 속성

화면에 추가한 버튼은 눈에 바로 보이는 것이고 그 버튼을 담고 있는 눈에 보이지 않는 것이 레이아웃입니다.

프로젝트를 처음에 만들면 제약 레이아웃이라는 것이 버튼을 담고 있는 형태로 만들어집니다.

버튼과 제약 레이아웃은 뷰의 한 종류 입니다. 뷰는 화면의 일정 공간을 차지하므로 크기 속성이 필수입니다.

즉, 크기를 알아야 화면의 공간 중에서 얼마만큼을 뷰에게 할당해줄지 알 수 있습니다.

화면을 구성할 때는 XML 파일을 만들게 되는데 XML 파일 안에는 태그와 속성들이 들어가게 됩니다.

이 XML 파일을 시스템이 읽어 들여 앱의 화면으로 보여주게 됩니다.

태그가 추가된 레이아웃의 구성

이 각각의 태그는 뷰를 의미하는데 가로, 세로의 크기가 필수 속성이므로 layout_width, layout_height 속성을 반드시 넣어주어야 합니다.

속성 앞에 붙어있는 android: 라는 지시어는 안드로이드 SDK에서 정의한 속성이라는 의미로 대부분의 속성이 SDK의 속성이므로 보통은 눈여겨보지 않아도 됩니다.

android:layout_width 속성을 layout_width 속성이라고 부르는 이유죠.

크기를 지정하는 방법은 세 가지가 있습니다.

"match_parent"는 상위 뷰의 크기에 맞게 구성 요소를 확장하고, 뷰 안에 들어있는 내용물의 크기에 딱 맞게 크기를 결정하는 wrap_content를 사용할 수도 있고 원하는 크기를 숫자로 지정할 수도 있습니다.

이때 크기를 나타내는 숫자 뒤에는 px나 dp와 같은 단위를 붙여줍니다.




생각해보기

  1. 버튼에는 얼마나 많은 속성이 들어 있을까요?
    -기본적인 높이 너비 안에들어갈 글씨 말고도 밑에 모든속성보기를 누르면 그 속성의 갯수가 많다는걸 알수있다.
  2. 버튼이 텍스트뷰를 상속받아 만들어진 것이라면 버튼을 텍스트뷰라고 말할 수 있는 걸까요?
    -이건 좀 애매한데 나는없다고본다. 애초에 버튼이 텍스트뷰를 상속받아서 만들어진것이라 속성들을 똑같이 가지고있지만 단지 상속되어있다는 것으로 버튼을 텍스트뷰라고하기는 애매한것 같다.


+ Recent posts