Android

[Android] - View와 ViewGroup란 무엇일까

서퍼리노 2023. 2. 11. 15:04
728x90

안드로이드 앱을 개발하며 기능에만 집중하다 보면

정말 기본과 관련된 내용에 소홀히 할 수 있습니다.

 

하지만 UI를 구성하는 능력은 신입 안드로이드 앱 개발자로서의 기본적인 역량입니다.

따라서 오늘은 View와 ViewGroup에 대해 알아보겠습니다.

 

View는 화면에 보이는 모든 것,

즉 사용자가 볼 수 있는 요소들을 View라고 이야기합니다.

 

그렇다면 ViewGroup은 무엇일까요??

레이아웃의 구조를 정의하는 container 역할을 해주는 것이 ViewGroup입니다.

흔히 이름 뒤에 layout들이 들어가 있는 경우들이 많습니다. 

 

예를 들자면 ConstraintLayout이나, LinearLayout 등이 있습니다.

위에서 흔히라고 말했듯이 예외도 있습니다.

자세한 사례들은 아래에서 설명하겠습니다.

View

뷰는 위에서 설명한 것처럼 정말 화면에 보이는 모든 것을 의미합니다.

또 다른 말로는 위젯이라고도 합니다. (바탕화면에 놓는 위젯과는 다른 개념입니다.)

대표적으로 imageView, TextView, Button, EditText 등이 View를 상속받아서 만든 클래스입니다.

 

컴포넌트 간 계층 구조를 갖는 경우도 있습니다.

TextView와 Button은 모두 컴포넌트이지만 

Text View는 직접적으로 상속받아서 아래 기능들을 구현할 수 있도록 이루어져 있습니다.

 



하지만 버튼을 보시면 View를 상속받는 TextView를 상속받음으로써

Button이 화면에 그려지게 됩니다.

최종적으로는 View를 상속받고 있다는 것을 알 수 있습니다.

따라서 버튼의 text를 지정하는 부분을 따라가면 TextView의 부분이 나온다는 것을 알 수 있습니다.

 

TextView와 Button처럼 상속을 받아 계층 구조를 갖는 경우가 있습니다.

 

ViewGroup

뷰 그룹은 레이아웃의 구조를 정의하는 container의 역할을 하고 있습니다.

View를 상속하여 만들어집니다.

 

대표적으로 ConstraintLayout, LinearLayout 등으로... Layout이 많다는 것을 알 수 있습니다.

하지만 또 무조건 Layout이 붙지는 않습니다.

 

예시로 CardViewr가 있습니다.

카드뷰는 View로 끝나지만,

FrameLayout을 상속받음으로 ViewGroup의 역할을 수행합니다.

 

ViewGroup을 하위 클래스로 상속받아 커스텀뷰를 구현하기도 합니다.

 

ViewGroup에서는 LayoutParams를 구현하여,

ViewGroup에 배치할 View의 크기와 위치를 정의합니다.

 

LayoutParams를 소개하기 위한 글이 아니기에 해당 내용은 다른 글에서 정리하겠습니다.

 

 

 

위처럼 여러 Layout을 중첩으로 사용하더라도 위의 그림처럼 자신에게 맞는 Layout대로 구현할 수 있습니다.

 

ViewGroup에서는 View를 배치할 수 있습니다.

 

따라서 이처럼 컴포넌트를 배치할 수 있으며,

Layout의 속성에 따라 배치할 수 있도록 합니다.

 

만약 View에 컴포넌트를 넣는다면 어떻게 될까요?

직접적으로 에러메세지를 출력하지는 않지만,

View인 컴포넌트에서는 지원하지 않는 기능이기에

치명적인 오류가 발생할 수 도 있습니다.

 

위의 내용들을 정리하자면

위의 내용을 모두 정리하자면 화면을 구성하기 위한 요소는 View와 ViewGroup으로 구성이 되어있습니다.

그중 View는 쉽게 말해 화면에 보이는 모든 요소를 이야기하고, 

그러한 View를 담을 수 있는 컨테이너로, View를 상속받아 화면의 구조를 정의하는 역할을 합니다.

728x90