사용자 입장에서만 본다면,
앱은 View 로만 이루어져 있다고 해도 과언이 아니다.
앱에서 눈으로 볼 수 있는 모든 요소는 View 이다.
텍스트로 이루어진 요소는 TextView
그림으로 이루어진 요소는 ImageView
등 앱에서 모든 요소는 뷰로 이루어져 있다.
요소 이름에 View가 없다 하더라도 View 이다.
Button, EditText, CheckBox 등 모두 View 이다.
그리고 View 는 일반적으로 위젯으로 불린다.
여러개의 View 로 이루어진 View Group 또한 존재한다.
View Group 은 일반적으로 레이아웃으로 통한다.
레이아웃에 대한 자세한 내용은 다음 포스팅에서 다뤄보겠다.
View 의 기본 구조
일반적으로 View 는 다음과 같은 구조를 가져야 한다.
대부분의 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 의 강점이라 볼 수 있다.
View 참조하기
View 객체는 다양한 경로에서 참조될 수 있다.
대표적으로 백엔드(java 파일) 에서 참조하는 것을 예시로 들겠다.
프론트엔드에 있는 View 를 백엔드에서 동작시킨다고 이해하면 쉽다.
먼저, 레이아웃 xml 파일에서 TextView 를 생성해준다.
그리고 자바 파일에서는 다음과 같이 작성해준다.
TextView textView = findViewById(R.id.textView);
// 또는
TextView textView = (TextView) findViewById(R.id.textView);
위 참조 코드는 보통 onCreate() 메서드에 작성해준다.
자바 파일에서 View 객체를 참조하기가 끝났다.
이제 자바 코드로 레이아웃의 View 객체를 동작시킬 수 있다.
동작을 TextView 로 예를 들자면,
텍스트 변경, 이벤트 리스너 동작, 텍스트 숨기기 등
우리가 원하는대로 다룰 수 있게된 것이다.
여기까지 안드로이드 View 에 대해 알아보았다.
View 의 종류와 개념 범위는 정말 많고 넓다고 느낀다.
최대한 많이 사용해보고, 공부해야 되겠다고 생각한다.