이전에 간단하게 정리를 한 적이 있다.
https://superohinsung.tistory.com/228
오늘은 조금 더 자세하게 View Class에 대해서 정리를 해보자.
안드로이드는 TextView, ImageView, EditTextView, Button, Spinner, ListView 등등 많은 뷰 클래스를 제공한다.
뷰객체의 계층 구조
액티비티 화면을 구성할 때 사용하는 클래스는 모두 View의 하위 클래스이다. 그래서 화면과 관련한 클래스를 크게 뷰 클래스라고 한다.
객의 계층구조에서 중요한 역할을 하는 것은 레이아웃 클래스이다.
ViewGroup 클래스의 하위인 레이아웃 클래스는 화면 자체가 목적이 아니라 다른 뷰(TextView, ImageView 등등) 객체 여러 개를 담아서 한꺼번에 제어할 목적으로도 사용된다.
이러한 객체를 계층 구조로 만들어 이용하는 패턴을 컴포지트 패턴(Composite pattern)이라고 한다. 또는 문서객체 모델(document object model)이라고도 한다.
XML에서 뷰의 다양한 속성들
화면 구성을 레이아웃 XML 파일에 작성하고 액티비티에서 setContentView() 함수로 XML 파일을 지정하면 화면에 출력한다.
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
ID 속성
id 속성은 android:id="@+id/textView" 형태로 추가한다. 이 값은 식별자로 이용하기 때문에 앱 프로젝트에서 유일해야한다.
이처럼 XML에 id속성을 추가하면 자동으로 R.java 파일에 상수 변수로 추가된다.
액티비티에서는 findViewById()함수를 이용하여 사용한다.
크기 관련 속성
layout_height 과 layout_width는 크기와 관련된 속성들이다. 이러한 속성들을 이용해서 관련 뷰를 얼만큼 보여줄 것인가를 지정할 수 있다.
표현 방법에는 크게 3가지가 존재한다.
- 수치 : dp or px 단위를 사용
- match_parent : 부모의 크기 전체를 뜻함.
- wrap_content : 자신의 콘텐츠를 화면에 출력하 수 있는 적절한 크기를 의미함.
간격 관련 속성
뷰의 간격은 margin과 padding 속성을 이용한다.
- margin : 뷰와 뷰 사이의 간격
- padding : 뷰의 콘텐츠와 테두리 간격
margin과 padding 속성을 이용하면 네 방향 모두 같은 크기로 설정되지만 특정 방향만 간격을 조정하고 싶다면, 아래와 같은 속성을 이용한다.
- paddingLeft
- paddingRight
- paddingTop
- paddingBottom
- layout_marginLeft
- layout_marginRight
- layout_marginTop
- layout_marginBottom
표시 여부 속성
visibility 속성은 뷰가 화면에 출력되어야하는지를 설정하는 속성이다.
- visible : 기본값으로 뷰가 화면에 출력된다.
- invisible : 화면에 뷰가 보이지 않게 하지만 자리는 차지한다.
- gone : 화면에 뷰가 보이지 않게 하지만 자리는 차지하지 않는다.
'Android > Study' 카테고리의 다른 글
[Android] EditTextView 간단 정리 (0) | 2023.09.23 |
---|---|
[Android] TextView 정리 (0) | 2023.09.23 |
[Android] 안드로이드 프로젝트 구성 파일 정리 (0) | 2023.09.23 |
[Android] 안드로이드 앱 개발의 특징 (0) | 2023.09.19 |
[Android] ConstraintLayout 이란 (0) | 2023.09.11 |