컴파운드버튼
CompoundButton 클래스는 Buttom 클래스의 하위 클래스로 체크박스, 라디오버튼,스위치,토글버튼의 상위 클래스이다.
이 네가지는 공통적으로 체크 또는 언체크 상태가 될 수 있다. (실제로 비슷한 형태를 띠지만 용도는 조금씩 다르다)
체크박스
체크박스는 클릭할 때마다 상태가 체크,언체크로 바뀐다. 여러 개의 체크박스가 있어도 서로 독립적으로 동작한다는 특징이 있어 여러 개를 동시에 체크할 수 있다.
line4,11에서 checked 속성이 true로 되어 있는데, 이처럼 동시에 여러 개를 선택할 수 있다.
-setChecked() : 강제로 체크를 켜거나 끄는 메서드
-toggle(): 체크 상태를 반대로 바꾸는 메서드
-isChecked(): 체크되었는지를 확인하는 메서드
버튼에서 클릭 이벤트를 발생 시 OnClickListener를 사용했듯이, 체크박스에는 체크 또는 언체크 이벤트 발생 시 OnCheckedChangeListener를 사용할 수 있다.
체크와 언체크가 바뀌는 것의 처리과정(Java)
1.체크박스 변수 선언
CheckBox mycheck;
2.변수에 체크박스 위젯 대입
mycheck=(CheckBox) findViewById(R.id.android);
3.체크박스가 변경될 때 동작하는 클래스 정의
mycheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){
//동작 내용을 이 부분에 코딩
}
});
스위치와 토글버튼
스위치와 토글버튼은 모양만 조금 다를 뿐 용도는 거의 동일하다. 스위치의 주 용도는 on/off 상태 표시이다.
*컴파운드버튼(체크박스,라디오버튼, 스위치, 토글버튼 등)은 AVD 버전,SDK 버전, 테마 설정 등에 따라서 모양이나 색상이 조금씩 다르지만 기능은 동일하다.
checked 속성은 true와 false에 따라서 색상과 글자가 다르게 표현된다.
라디오버튼과 라디오그룹
라디오버튼은 XML속성이나 메서드가 체크박스와 거의 동일하지만 용도가 다르다. 성별을 선택하는 것처럼 여러 개 중 하나만 선택해야 하는 경우에 사용한다. 그러나 라디오버튼만 여러 개 나열하면 클릭하는 것마다 모두 중복 선택되므로 라디오그룹(RadioGroup)과 함께ㅔ 사용해야 한다.
라디오그룹은 ViewGroup_LinearLayout의 하위 클래스로 존재하며, 지금 사용하고 있는 TextView 하위의 위젯들과는 성격이 조금 다르다. 라디오 그룹은 대부분 라디오 버튼을 묶는 역할만 하므로 다음 예제만 이해하면 된다.
-clearCheck()
해당 라디오그룹 안에 체크된 것을 모두 해제해준다. line1~7의 라디오그룹으로 묶었기 때문에 이 라디오그룹 안의 모든 라이도 버튼은 한 번에 하나씩만 선택된다.
각 라디오버튼 id속성이 꼭 있어야 한다. id 속성이 없으면 해당 라디오버튼이 계속 선택된 것으로 지정되어 해제되지 않는다.
이미지뷰와 이미지버튼
이미지뷰는 그림을 출력하는 위젯이다. 그림 파일은 일반적으로 프로젝트의 [res]-[drawable]폴더에 있어야 한다.
접근은 XML에서 "@drawable/그림 아이디" 형식으로 한다.
위 그림을 보면 ImageView 클래스는 View 클래스에서 바로 상속받기 때문에 앞에서 배운 TextView의 하위 위젯들과 속성이 조금 다르다. 특히 이미지와 관련된 속성과 메서드를 주의깊게 살펴볼 필요가 있다. ImageButton 클래스는 ImageView 클래스에서 상속받으며 거의 동일한 용도로 사용하지만 버튼처럼 클릭하는 데 쓰인다. 이미지버튼은 그림으로 표현된 예쁜 버튼을 만들 때 사용할 수 있다.
'Computer engineering > Android Programming' 카테고리의 다른 글
안드로이드 Toolbar 없이 Toolbar만들기 (0) | 2022.06.14 |
---|---|
RecyclerView & GirdLayout Decoration Customizing & Caution (0) | 2022.06.13 |
레이아웃 개요 (0) | 2021.04.24 |
기본 위젯 다루기 (0) | 2021.04.06 |
기본 위젯 익히기 (0) | 2021.03.22 |