본문 바로가기
안드로이드/Widget

안드로이드 CheckedTextView

by 김어찐 2022. 5. 31.
728x90

CheckBox, RadioButton 을 커스터마이징 할 수 있도록 제공되는 View 이다.

CheckedTextView 주요 속성

checkMark : 체크 상태를 표시하는 아이콘을 설정한다.
checked : 체크 상태를 설정한다.
clickable : 클릭이 가능한지 설정한다. CheckedTextView는 CheckBox나 RadioButton이 가지고 있는 기능이 구현되어 있지 않다. 이 때문에 개발자가 기능을 모두 구현해줘야 하는데 clickable에 true를 설정해야 이벤트에 반응할 수 있고 이를 통해 리스너를 구현하여 기능을 구현해줘야 한다.

checkMark 방향

checkedTextView는 checkMark를 설정하면 우측에 표시된다.
checkMark 속성이 아닌 다음 속성을 이용하면 원하는 방향에 표시할 수 있다.
drawableTop : 상단
drawableBottom : 하단
drawableLeft : 좌측
drawableRigt : 우측

CheckedTextView 주요 프로퍼티

isChecked : 체크 상태

 

checkMark 주요 이벤트

click : 클릭했을 때 발생한다. checkedTextView는 이 이벤트를 반드시 설정해야 한다. checkedTextView는 checkbox나 radioButton이 가지고 있는 기능을 click 이벤트 발생 시 개발자가 모두 처리해줘야 한다.

 

package com.example.checkedtextview

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.CheckedTextView
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button.setOnClickListener {
            textView.text = ""
            if (checkedTextView.isChecked == true) {
                textView.append("첫 번째 체크 박스가 체크되어있습니다\n")
            } else {
                textView.append("첫 번째 체크 박스가 체크되어 있지 않습니다\n")
            }
            if (checkedTextView2.isChecked == true) {
                textView.append("두 번째 체크 박스가 체크되어있습니다\n")

            } else {
                textView.append("두 번째 체크 박스가 체크되어 있지 않습니다\n")
            }
            if (checkedTextView3.isChecked == true) {
                textView.append("세 번째 체크 박스가 체크되어있습니다\n")

            } else {
                textView.append("세 번째 체크 박스가 체크되어 있지 않습니다\n")
            }
            if (checkedTextView4.isChecked == true) {
                textView.append("첫 번째 라디오 버튼이 체크되어있습니다")
            } else if(checkedTextView5.isChecked == true){
                textView.append("두 번째 라디오 버튼이 체크되어있습니다")
            }else if(checkedTextView6.isChecked == true){
                textView.append("세 번째 라디오 버튼이 체크되어있습니다")
            }

        }



        button2.setOnClickListener {
            checkedTextView.isChecked=false
            checkedTextView2.isChecked=true
            checkedTextView3.isChecked=false
            checkedTextView4.isChecked=false
            checkedTextView5.isChecked=false
            checkedTextView6.isChecked=true
        }
        checkedTextView.setOnClickListener(listener1)
        checkedTextView2.setOnClickListener(listener1)
        checkedTextView3.setOnClickListener(listener1)

        checkedTextView4.setOnClickListener(listener2)
        checkedTextView5.setOnClickListener(listener2)
        checkedTextView6.setOnClickListener(listener2)

    }

    val listener1 = object : View.OnClickListener{
        override fun onClick(v: View?) {
            // 형변환
            val obj = v as CheckedTextView
            if (obj.isChecked == true) {
                obj.isChecked = false
            } else {
                obj.isChecked=true
            }
        }
    }
    val listener2 = object : View.OnClickListener{
        override fun onClick(v: View?) {
            checkedTextView4.isChecked=false
            checkedTextView5.isChecked=false
            checkedTextView6.isChecked=false
            val obj = v as CheckedTextView
            obj.isChecked=true
        }
    }
}

728x90

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

안드로이드 ProgressBar  (0) 2022.06.02
안드로이드 Chip  (0) 2022.05.31
안드로이드 Switch  (0) 2022.05.30
안드로이드 RadioButton  (0) 2022.05.30
안드로이드 CheckBox  (0) 2022.05.30