[Android Study] 뷰 클래스

728x90
반응형

* 뷰 객체의 계층 구조

  - 액티비티 화면을 구성할 때 사용하는 클래스는 모두 View의 하위 클래스이다. 그래서 화면 구성과 관련한 클래스를 통칭하여 뷰 클래스 라고 부른다.

 

* 레이아웃 XML의 뷰를 코드에서 사용하기

  - 화면 구성을 레이아웃 XML 파일에 작성하고 액티비티에서 setContentView() 함수로 XML 파일을 지정하면 화면을 출력한다.

  - 예를 들어, 아래와 같이 XML 파일을 작성했다면 화면에 "hello"라는 문자열을 출력한다. XML 태그로 입력한 TextView 객체가 생성되고 그 객체의 내용이 화면에 출력되는 것이다.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="hello" />

 

  - 그런데 때로는 이렇게 XML에 선언한 객체를 코드에서 사용해야 할 때가 있다. 여기서 문제는 우리가 직접 생성한 객체가 아니므로 이름이 없어서 지칭할 수가 없다는 것이다. 이 때 사용하는 속성이 id이다. 각 객체를 어떻게 부를 것인지 식별자를 부여하고 그 식별자로 객체를 얻어 오기 위해 사용한다.

  - id는 꼭 지정해야 하는 속성은 아니며 레이아웃 XML에 선언한 뷰를 구별할 필요가 없을 때는 생략해도 된다.

<TextView
	android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="hello" />

  - id 속성은 위와 같은 형태로 추가한다. 이처럼 XML에 id 속성을 추가하면 자동으로 R.java 파일에 상수 변수로 추가된다.

  - id 속성값은 "@+id/text1" 형태로 추가하는데 XML 속성값이 @로 시작하면 R.java 파일을 의미한다. 따라서 이 표현식은 R.java 파일에 text1 이라는 상수 변수를 추가하라는 의미이다.

 

  - 이제 MainActivity 등의 코드에서 R.java파일의 상수 변수로 객체를 얻을 수 있다. 이 때, findViewById() 함수를 이용한다.

// XML 화면 출력
setContentView(R.layout.activity_main) -> 액티비티 화면 출력(뷰 객체 생성)

// id 값으로 뷰 객체 획득
val textView1: TextView = findViewById(R.id.text1)
val textView1 = findViewById<TextView>(R.id.text1)

 

* 뷰의 크기 지정하기

 - 뷰가 화면에 나올 때 어떤 크기로 보여야 하는지 설정하는 것이 layout_width, layout_height속성이다.

 - 이때 크기를 나타내는 속성값에는 다음 3가지 중 하나를 사용해야 한다.

    - match_parent : 부모 크기 전체를 뜻한다, 자신의 상위 계층의 크기

    - wrap_content : 자신의 콘텐츠를 화면에 출력할 수 있는 적절한 크기. "hello"라는 문자열을 TextView에 설정하고 wrap_content로 지정했다면 딱 "hello"가 출력될 정도의 크기로 설정된다. 

    - 직접적인 수치(100px, 20dp 등)

위 버튼은 wrap_content, 아래 버튼은 match_parent

* 뷰의 간격 설정

- 뷰의 간격은 margin과 padding으로 설정한다. margin 속성은 뷰와 뷰 사이의 간격이며 padding 속성은 뷰의 콘텐츠와 테두리 사이의 간격이다. 기본적으로 4 방향 같은 크기로 설정되며 특정한 한 방향만 설정하고 싶다면 paddingLeft, paddingTop, layout_marginTop, layout_marginRight 등의 속성을 이용한다.

button1은 padding: 30dp를 줬고 button2는 paddingBottom: 50dp, marginLeft: 50dp를 줬다.

* 뷰의 표시 여부 설정

 - 뷰가 화면에 출력되지 않게 하려면 visibility 속성을 이용하며 값은 visible, invisible, gone이 있다.

 - invisible은 뷰가 화면에 보이지 않지만 자리는 차지하며 gone으로 설정하면 자리조차 차지하지 않는다.

728x90
반응형

'Study > Android' 카테고리의 다른 글

[Android Study] 뷰 바인딩  (0) 2024.03.09
[Android Study] 뷰의 종류  (0) 2024.03.08
[Android] 구글 로그인  (1) 2024.03.06
[Android Study] 앱 구성 파일 분석  (1) 2024.03.05
[Android Study] 안드로이드 특징  (2) 2024.03.05
TAGS.

Comments