Android (안드로이드)

[Android] 뷰 / 위젯 / View / View 크기 조정 / match_parent / wrap_content

Oscar:) 2022. 8. 5. 08:17

 

사용자 입장에서만 본다면,

앱은 View 로만 이루어져 있다고 해도 과언이 아니다.

 

앱에서 눈으로 볼 수 있는 모든 요소는 View 이다.

 

다양한 뷰 中, 일부분

 

텍스트로 이루어진 요소는 TextView

그림으로 이루어진 요소는 ImageView

 

등 앱에서 모든 요소는 뷰로 이루어져 있다.

 

 

요소 이름에 View가 없다 하더라도 View 이다.

Button, EditText, CheckBox 등 모두 View 이다.

 

그리고 View 는 일반적으로 위젯으로 불린다.

 

 

여러개의 View 로 이루어진 View Group 또한 존재한다.

View Group 은 일반적으로 레이아웃으로 통한다.

 

레이아웃에 대한 자세한 내용은 다음 포스팅에서 다뤄보겠다.

 

 

 


 

View 의 기본 구조

 

일반적으로 View 는 다음과 같은 구조를 가져야 한다.

 

TextView 로 예시를 든다

 

대부분의 View 는 위 빨간색 3줄 정도만 작성하면 사용 가능하다.

 

하지만 상황에 맞게끔, 다른 요소들도 추가해줘야 한다.

 

텍스트뷰에는 텍스트가 작성되어야 할 것이고,

이미지뷰에는 그림이 추가되어야 할 것이며,

레이아웃에 따라서 강제되는 요소들 또한 존재한다.

 

지금은 일단, 빨간 표시 부분의 3가지 요소만 알아보겠다.

 

android : id

View 의 아이디를 정해주는 것이다.

View 를 다른 곳에서 참조할 때 식별하기 위한 수단이다.

 

참조되지 않을 View 라면, 딱히 작성하지 않아도 된다.

하지만 거의 대부분의 View 는 참조될 것이고, id를 필요로 할 것이다.

 

 

android : layout_width / height

width : 너비 / height : 높이

 

즉, View 의 크기를 정해주는 것이다.

 

어떠한 View 를 생성하던, 크기는 무조건 정해주게 되어있다.

크기를 작성하지 않았다면, 에러를 만나게 될 것이다.

 

크기가 0 이라면, 그 View 는 존재하지 않는 것이나 다름 없기 때문이다.

 

 

 


 

View 의 크기 지정

 

 

View 의 크기를 정해줄 때는 보통 3가지 방법을 사용한다.

 

1. match_parent

 

해당 View 를 포함하고 있는 부모 영역에 맞춰준다.

부모 영역이라 하면, 대부분 레이아웃이 될 것이다.

 

 

2. wrap_content

 

View 내용물의 크기에 맞춰준다.

auto 개념이라고 생각하면 쉽다.

 

다음 사진을 보며 쉽게 이해해보자.

 

 

국룰 텍스트인 Hello World 가 보인다.

영역에 대한 가독성을 높이기 위해 배경 색상을 추가했다.

위 사진의 레이아웃 xml 코드는 다음과 같다.

 

 

width = match_parent 로 작성하였기 때문에,

부모 영역에 맞추어, 너비가 가득 채워진 것을 확인할 수 있다.

 

height = wrap_content 로 작성하였기 때문에,

textSize = 30dp 에 맞게끔 높이가 설정된 것을 확인할 수 있다.

 

 


 

 

3. 숫자로 수치 지정

 

이번에는 크기를 숫자로 지정해 보겠다.

 

 

위 사진의 레이아웃 xml 코드는 다음과 같다.

 

 

width = wrap_content 로 작성하였기 때문에,

텍스트의 길이만큼만 너비 영역이 설정된 것을 확인할 수 있다.

 

textSize = 30dp 로 지정되어 있음에도

height = 200dp 로 지정했기 때문에

뷰의 높이가 200dp로 설정된 것을 확인할 수 있다.

 


 

이렇게 View 의 크기를 지정하는 3가지 방법을 알아보았다.

 

그리고, 각각의 용도에 맞게끔 사용하는 것이 정말 중요하다.

개인적으로 1,2번 방법만으로 사용하는 것을 추천한다.

 

 

수치를 직접 지정하는 3번 방법을 추천하지 않는 이유에 대해

몇 가지 예시를 들어 보겠다.

 

 

 

· 앱 사용 도중 크기가 변경되는 View 의 경우

 

width = 100dp 크기를 가진 TextView 로 가정해보자.

사용자의 입력 값에 따라 100dp 를 초과하는 텍스트로 변경되었을 때,

텍스트가 짤린 채로 출력될 것이다.

 

 

따라서, 자주 변경되는 View 의 경우

전체 레이아웃에 영향을 주지 않는다는 가정하에

wrap_content 를 사용할 것을 추천한다.

 

 

· 디바이스의 크기에 따라 달라지는 비율

수치를 직접 입력하여 지정했을 때

 

기기 1 의 기준으로 View 의 크기를 수치로 지정했을 경우,

기기 2 에서 의도한 대로 표시되긴 어렵다.

 

 

match_parent + 여백 조정으로 지정했을 때

 

위와 같이 기기의 크기에 적응할 수 있는 것이

match_parent 의 강점이라 볼 수 있다.

 

 

 


 

View 참조하기

 

View 객체는 다양한 경로에서 참조될 수 있다.

 

대표적으로 백엔드(java 파일) 에서 참조하는 것을 예시로 들겠다.

 

프론트엔드에 있는 View 를 백엔드에서 동작시킨다고 이해하면 쉽다.

 

 

먼저, 레이아웃 xml 파일에서 TextView 를 생성해준다.

위에서 사용했던 TextView 를 재탕하겠다

 

 

그리고 자바 파일에서는 다음과 같이 작성해준다.

TextView textView = findViewById(R.id.textView);
// 또는
TextView textView = (TextView) findViewById(R.id.textView);

 

위 참조 코드는 보통 onCreate() 메서드에 작성해준다.

 

자바 파일에서 View 객체를 참조하기가 끝났다.

이제 자바 코드로 레이아웃의 View 객체를 동작시킬 수 있다.

 

동작을 TextView 로 예를 들자면,

텍스트 변경, 이벤트 리스너 동작, 텍스트 숨기기 등

우리가 원하는대로 다룰 수 있게된 것이다.

 

 


 

여기까지 안드로이드 View 에 대해 알아보았다.

 

View 의 종류와 개념 범위는 정말 많고 넓다고 느낀다.

 

최대한 많이 사용해보고, 공부해야 되겠다고 생각한다.