본문 바로가기

안드로이드

View 의 기초 속성

1. id 속성

필수 속성은 아니지만, 필요할 때 추가 가능

XML에 등록하여 자동으로 생성된 객체를 자바 코드에서 식별할 필요가 있을 때 id 속성 사용

 

XML 파일로 작성한다고 가정, 뷰 코드를 자바 코드로 직접 생성한 게 아니기 때문에 id가 없으면 객체명을 알 수 없음

 

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

이렇게 지정한 id 값은 해당 앱의 R.java 파일에 등록된다.

id 값도 R.java 파일에 등록됨

 

setContentView() 함수를 호출하면, 레이아웃 XML 파일 내용이 화면에 출력되고, XML에 정의한 객체가 자동으로 생성된다.

 

TextView myTextView = findViewById(R.id.myText);

이렇게 사용이 가능

 

2. layout_width, layout_height 속성

 

뷰를 화면에 표시할 때, 반드시 뷰의 크기를 지정해야 한다.

선언하지 않으면 빌드할 때 에러가 발생한다.

 

크기 속성값

- match_parent / fill_parent
해당 뷰의 크기를 부모 계층의 뷰가 지정한 크기에 꽉 들어차게 자동으로 결정
뷰의 계층구조는 다음 포스트에 있음

- wrap_content
문자열 폰트 크기의 영향을 받고, 적절한 크기를 계산해서 결정하라는 의미

- 100px
수치로 뷰의 크기를 직접 설정할 수도 있다.

수치로 직접 지정하기 보다는 다양한 스마트폰 크기에 대응하기 위해서 match_parent, wrap_content 를 주로 사용한다.

 

3. margin, padding 속성

단일 방향 margin 속성

- layout_marginLeft

- layout_marginRight

- layout_marginTop

- layout_marginBottom

 

단일 방향 padding 속성

- paddingLeft

- paddingRight

- paddingTop

- paddingBottom

 

 

4. clickable 속성

버튼은 clickable 속성을 지정하지 않아도 기본 클릭이나 롱클릭 이벤트를 처리할 수 있음.

TextView , ImageView 는 clickable 지정해야 반응이 됨.

 

이미지를 이미지뷰로 출력하고, clickable 속성으로 클릭 이벤트를 발생시켜 버튼 효과를 낼 때 유용하게 사용

 

 

5. visibility 속성

기본값은 true

 

안보이게 하려면

android:visibility="gone"

android:visibility="invisible"

이 둘의 차이점은

 

gone : 크기 확보하지 않는 것

invisible : 크기 확보하는 것

 

액티비티 화면을 XML 로 구성할 때 초기에 특정 뷰를 화면에 출력하지 않으려는 용도로 사용.

특정 순간에 동적으로 화면 출력 가능

setVisibility() 함수를 이용하여 뷰의 표시 상태를 조정할 수 있다.

targetBtn.setVisibility(View.VISIBLE);
targetBtn.setVisibility(View.INVISIBLE);

 

이벤트 프로그램을 통한 동적 처리 예제

trueBtn.setOnClickListener(this);

@Override
public void onClick(View v) {
    if(v==trueBtn) {
        targetTextView.setVisibility(View.VISIBLE);
    }else if(v==falseBtn) {
        targetTextView.setVisibility(View.INVISIBLE);
    }
}

'안드로이드' 카테고리의 다른 글

빌더 패턴  (0) 2020.08.27
뷰 아키텍처  (0) 2020.08.27
액티비티 - 뷰 구조  (0) 2020.08.27
MainActivity.java 기본 중 기본  (0) 2020.08.27
AndroidManifest.xml  (0) 2020.08.27