티스토리 뷰

Dev/Android

[Android] CheckBox 커스텀 / Listener

DWFOX DWFOX 2016. 1. 11. 13:40



안드로이드 CheckBox 커스텀 하기 / 리스너 등록하기


   커스텀 체크박스 이미지 만들기  

Custom CheckBox

커스텀할 체크박스 이미지를 res/drawable 폴더에 check_press.png check_nor.png를 넣어 둔다.

그리고 아래와 같이 res/drawable/custom_check_box.xml 파일을 생성한다.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- 체크박스 해제상태  -->
	<item android:drawable="@drawable/check_press" android:state_checked="false" />
	<!-- 체크박스 선택상태 -->
	<item android:drawable="@drawable/check_nor" android:state_checked="true" />
	<!-- default state -->
	<item android:drawable="@drawable/check_press" />
</selector>


   CheckBox에 Custom된 이미지 적용하기

레이아웃에 CheckBox를 작성할 때 android_button="@null"을 지정해줘야 커스텀된 이미지가 체크박스의 크기에 맞게 들어간다.
그리고 커스텀된 이미지를  android:background="@drawable/custom_check_box.xml"과 같이 지정해 준다.
아래와 같이 CheckBox를 넣어주면 커스텀된 체크박스를 사용할 수 있다.
<CheckBox
    android:id="@+id/check_box_id"
    android:layout_width="20dp"
    android:layout_height="20dp"
    android:background="@drawable/custom_check_box.xml"
    android:button="@null" />


   CheckBox 변경 리스너 등록하기


체크박스를 초기화 하고 변경리스너를 등록한다.
여러개의 체크박스를 아래와 같이 공통으로 등록할 때 buttonViewid를 가져와 ClickListener를 등록할 때와 같이 switch로 사용하면 된다. 
	CheckBox checkBox = (CheckBox)findViewById(R.id.check_box_id) 
        checkBox.setOnCheckedChangeListener(onCheckedChangeListener ); // CheckBox에 리스너 등록
	
	private CompoundButton.OnCheckedChangeListener onCheckedChangeListener = 
		new CompoundButton.OnCheckedChangeListener() {
		@Override
		public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
			switch(buttonView.getId())
				case R.id.check_box_id: // Layout에 등록한 CheckBox의 id : 첫번째
					if (isChecked){
					//TODO 체크박스가 선택 체크 되었을때
					}
					else{
					//TODO 체크박스가 선택 해제 되었을때
					}
					break;
				case R.id.check_box_id_02: // Layout에 등록한 CheckBox의 id : 두번째
					if (isChecked){
					//TODO 체크박스가 선택 체크 되었을때
					}
					else{
					//TODO 체크박스가 선택 해제 되었을때
					}
					break;
				default:
					break;
			}
	};


댓글
댓글쓰기 폼