§ 안드로이드 앱에서 흔히 볼 수 있는 [ 버튼, 텍스트 ] 등의 UI 구성 요소가 모두 뷰에 해당됩니다.
§ 뷰는 역할에 따라서 밑의 이름들로 부르기도 합니다.
○ 위젯 ( Widget ) : 컨트롤의 역할을 하는 것
○ 레이아웃(Layout) : 내부에 포함된 뷰를 배치하는 역할을 하는 것.
== 뷰 그룹을 활용해서, 안에 포함된 뷰의 위치를 지정할 수 있습니다.
☆ " view 클래스 " 는 모든 뷰의 최상위 클래스입니다.
- > 뷰(View)와 뷰 그룹(View Group)은 모두 'view 클래스' 를 상속 받기 때문에
- 뷰그룹은 뷰처럼 다룰 수 있고,
- 뷰 그룹 안에 또 다른 뷰 그룹이 포함될 수도 있습니다.
이러한 특징으로 인해서,
★ 하나의 뷰를 다른 뷰로부터 상속 받아서 사용할 때, 다른 뷰의 속성을 동일하게 활용 가능합니다 !!!
◇ 자주 쓰는 뷰의 속성.
◇ 뷰의 크기.
- 많은 속성들 중에서 필수로 선언되어야 하는 속성입니다.
- 뷰는 뷰를 포함하는 뷰그룹( = 뷰가 속한 뷰그룹 ) 이 가지는 여유 공간의 일부 또는 전체에 놓이게 됩니다.
== > 화면에서 뷰 하나가 얼마만큼의 공간을 차지할 것인지에 대한 계산을 해야하기 때문에
뷰 크기에 대한 선언이 빠지면 에러가 발생하게 됩니다.
§ 크기는 layout_width , layout_height 두개의 속성으로 선언 가능합니다.
@ 아래의 세가지 중 하나의 값을 가집니다.
√ match_parent : 남아있는 여유 공간을 모두 채웁니다.
√ wrap_content : 뷰에 들어있는 내용물의 크기에 따라 뷰의 크기를 결정합니다.
√ 정수 값: 크기를 고정된 값으로 만듭니다.
- 사용할 수 있는 단위 : dp, in, mm, pt, px, sp
- 가장 많이 사용되는 단위는 dp 입니다. ( 해상도에 따른 뷰 크기 조절이 필요 X )
ex) 320dpi라면, 1dp = 2px
- wrap_content을 사용했을 때는 내용물인 text에 따라 크기가 유동적으로 결정.
- match_parent 의 경우, 부모 뷰인 LinearLayout의 남은 공간을 모두 채움.
§ wrap_contetn / match_parent / dp 를 이용해서 크기를 지정하는 이유는??
== > 여러 디바이스의 크기에 쉽게 대응하기 위함입니다.
☆ XML 파일은 " 태그와 속성 " 으로 구성됩니다.
- <> 기호로 태그의 이름을 감싸고서, 태그의 내부에 속성을 선언하는 방식입니다.
- 속성이 여러개일 경우, 공백으로 값을 구분합니다.
<시작 태그
속성1="속성값1"
속성2="속성값2"
...
</종료 태그>
- ex) 버튼 위젯을 선언하는 경우
= > Button은 태그의 이름, android : layout_width 는 태그의 속성.
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="버튼1" />
++ 태그의 이름이 Button, TextView 처럼 안드로이드 API에 기본적으로 정의(내장)된 태그라면,
패키지를 생략하고 곧바로 사용이 가능합니다.
++ > 외부 라이브러리나 직접 커스텀한 뷰를 선언해서 사용하고 싶다면,
태그 이름에 패키지명을 함께 명시해야 합니다.
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
...
</android.support.design.widget.CoordinatorLayout>