Android

안드로이드 기본 위젯

croute 2010. 9. 8. 19:33
안드로이드 SDK는 입력 필드, 레이블, 버튼 등 기본 위젯을 제공한다.


레이블
TextView 클래스로 구현한다.
- 일반 GUI 툴킷처럼 고정된 텍스트를 화면에 표시, 사용자가 직접 내용 변경은 못한다.
- 보통 주변 위젯에 대한 설명을 표시할 때 많이 사용한다.

Java code 이용
- 직접 TextView 클래스의 인스턴스를 생성해서 원하는 위젯을 얻음
XML 레이아웃 이용
- XML 레이아웃 파일에 TextView 엘리먼트 추가 -> TextView 엘리먼트에 android:text 속성을 지정

- android:typeface 속성 : 글꼴 종류를 지정한다(예를 들어 monospace 등)
- android:textStyle 속성 : 굵은 글꼴(bold)로 할지, 기울인 글꼴(italic)로 할지, 둘다 적용(bold_italic)할지를 지정
- android:textColor 속성 : 글꼴의 색깔을 16진수 RGB포맷으로 지정(ex-빨간색 #FF0000)

<?xml version="1." encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="텍스틀를 넣으면 되요."
/>




버튼
- Button 클래스 역시 TextView를 상속받은 클래스




이미지
- 안드로이드 SDK에서 두가지 위젯을 제공 : ImageView / ImageButton
- ImageView : 이미지를 넣을 수 있는 TextView 클래스
- ImageButton : 이미지를 넣을 수 있는 Button 클래스
- 두가지 위젯 모두 XML 레이아웃 파일에서 android:src 속성에 어떤 이미지 파일을 사용할지 지정
- android:src 속성에 들어가는 내용은 대부분 res/drawable 디렉토리에 위치

- ImageButton은 ImageView를 상속받은 클래스
- 클릭에 반응하는 것 뿐만 아니라 다른 일반적인 Button 기능도 모두 가짐




입력 필드
- 버튼, 레이블과 함께 가장 핵심 적인 기본 위젯 가운데 하나
- 안드로이드 SDK에서 입력필드는 EditText 라는 기본 클래스로 구현, EditText 클래스는 TextView 클래스의 하위 클래스
- EditText 클래스는 TextView 클래스에 사용할 수 있는 기본 속성 뿐 아니라, 
 사용자에게 어떤 입력을 받을 때 사용 할 수 있는 다음과 같은 추가 속성을 제공

- android:autoText 속성 : 자동 철자 교정 기능을 사용할 것인지 지정
- android:capialize 속성 : 입력된 텍스트의 첫 글자를 대문자로 자동변환할지를 지정(영문 이름, 또는 도시명 등)
- android:digits 속성 : 특정 숫자만 입력받을 수 있게 제한할지 여부를 지정
- android:sigleLine 속성 : 한줄짜리 텍스트만 입력받을건지, 여러 줄도 입력받을건지 지정
- android:numeric 속성 : 숫자만 입력받을 수 있게
- android:password 속성 : 입력된 글자가 노출되지 않은 암호 입력창
- android:phoneNumber 속성 : 전화번호를 입려갇을지 지정
- android:inputMethod 속성 : 값을 특정 형태로 입력받아야 할 경우 inputMethod 속성에 지정




체크 박스
- 일반적인 체크 박스는 체크상태/체크되지않은상태, 두가지 상태를 유지
- 안드로이드 SDK에서는 체크 박스를 CheckBox 클래스에서 구현
- CheckBox역시 TextView 클래스의 하위 클래스이므로 android:textColor와 같이 TextView가 지원하는 속성 모두 사용 가능

자바코드에서 다음과 같은 메소드를 호출해 활용
- isChecked() : 체크 박스가 현재 체크된 상태인지 아닌지를 확인
- setChecked() : 체크 박스의 체크 상태를 직접 지정
- toggle() : 체크 박스의 체크 상태를 변경



라디오 버튼
- 체크 박스와 마찬가지로 두 가지 상태를 가짐
- 라디오 버튼 여러개를 하나의 그룹으로 묶어 그룹 안에서는 한번에 하나의 라디오 버튼만 선택
- CompoundButton 클래스를 상속받음, 그 상위에서 TextView 클래스를 상속받음
- 보통 라디오 버튼 사용시엔 여러개의 RadioButton 인스턴스를 RadioGroup 인스턴스로 묶어서 사용.
- isChecked(), toggle() 사용 가능

- check() 메소드 : 특정 ID의 라디오 버튼을 체크 할 수 있다.
- clearCheck() 메소드 : 특정 ID의 라디오 버튼의 체크 상태를 풀 수 있다.
- getCheckedRadioButton() 메소드 : 현재 선택된 라디오 버튼 ID를 알아낼 수 있다.(선택된 버튼이 없으면 -1 리턴)





뷰 
- 위의 위젯은 모두 View 클래스를 상속받고 있다.
- View 클래스에는 개별 위젯에서 소개하지 않았던 여러가지 유용한 기능이 내장되어있다.
- 이 기능은 위의 모든 위젯에서 공통적으로 사용할 수 있다.

입력포커스와 관련된 속성
- android:nextFocusDown 속성
- android:nextFocusLeft 속성
- android:nextFocusRight 속성
- android:nextFocusUp 속성

해당 위젯이 초기화면에 표시되는지 여부
- android:visibility 속성

위젯의 배경색을 RGB값으로 지정
- android:background




유용한 메소드

- setEnabled() : 특정 위젯의 사용 가능한지 여부 지정
- isEnabled() : 위젯이 현재  사용 가능한 상태인지는 확인

- requestFocus() : 위젯의 requestFocus() 메소드를 호출하면 입력 포커스를 해당 위젯으로 옮길 수 있다.
- isFocused() : 위젯이 현재 포커스를 갖고 있는지 확인

- setFocuse() : setEnabled() 메소드로 특정 위젯을 사용할 수 없게 변경시, 적절한 다른 위젯에서 포커스를 자동으로 넘긴다.


액티비티의 사용자 인터페이스를 구현하는 위젯가 컨테이너 사이를 찾아다니고자 할때
- getParent() : 상위 위젯이나 컨테이너를 알려준다.
- findViewById() : 컨테이너 내부에서 지정한 ID에 해당하는 위젯을 찾아준다.
- getRootView() 메소드 최상위 컨테이너를 찾아준다.(즉 setContentView() 메소드에서 넘겨줬던 위젯이나 컨테이너를 말함)