문자열을 표시하는 view
사용자가 클릭하면 코드를 동작시키는 view
activityMainBinding.run{
button.run {
// click event 발생
setOnClickListener{
text.text = "버튼 활성화"
}
}
}
사용자에게 문자열 데이터를 입력받을 때 사용하는 view
// 입력 감시자 설정
val editTextWatcher = EditTextWatcher()
editText.addTextChangedListener(editTextWatcher)
// EditText 입력 감시자
inner class EditTextWatcher : TextWatcher {
// 입력 내용 변경 전
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
activityMainBinding.textView.text = "before : ${s}"
}
// 입력 내용 변경 했을 때
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
activityMainBinding.textView2.text = "changed : ${s}"
}
// 입력 내용이 변경된 후
override fun afterTextChanged(s: Editable?) {
activityMainBinding.textView3.text = "after : ${s}"
}
}
editText.run{
// 고차함수 이용
addTextChangedListener {
text.text = it
}
}
setOnEditorActionListener { v, actionId, event ->
textView.text = text.toString()
false
}
View가 화면을 벗어날 경우 스크롤을 사용하는 view
setOnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
textView.text = "Y : $oldScrollY -> $scrollY"
}
EditText를 보완한 view
textInputLayout.run{
editText?.run{
addTextChangedListener {
if(it!!.length > 10){
textInputLayout.error = "10 글자 이하로 입력해주세요"
} else {
textInputLayout.error = null
}
}
}
}
이미지를 사용자게에 보여주는 view
imageView.setImageResource(R.drawable.img_android)
선택할 수 있는 항목을 제공하고 체크를 통해 선택하는 view
checkBox1.isChecked = true
checkBox2.isChecked = true
checkBox3.isChecked = true
checkBox.toggle()
setOnCheckedChangeListener { buttonView, isChecked ->
if(isChecked){
textView.text = "첫 번째 체크박스는 체크 되어 있습니다"
} else {
textView.text = "첫 번째 체크박스는 체크 되어 있지 않습니다"
}
}
하나의 그룹 안에서 하나만 선택하는 view
RadioGroup
주요 속성
- checkedButton : 체크 상태로 설정할 버튼 설정
주요 메서드
- getCheckedRadioButtonId : 그룹 내에 선택되어 있는 RadioButton ID
when(radioGroup1.checkedRadioButtonId){ R.id.radioButton -> { textView.append("1-1 선택") } R.id.radioButton2 -> { textView.append("1-2 선택") } R.id.radioButton3 -> { textView.append("1-3 선택") } }
주요 이벤트
- checkedChange : 체크 상태가 변경됐을 때 발생
- setOnCheckedChangeListener : 체크 상태가 변경됐을 때 동작하는 함수
- checkedId : 선택된 버튼의 ID
setOnCheckedChangeListener { group, checkedId -> when(checkedId){ R.id.radioButton -> { textView.text = "1-1 선택" } R.id.radioButton2 -> { textView.text = "1-2 선택" } R.id.radioButton3 -> { textView.text = "1-3 선택" } } }
radioGroup1.check(R.id.radioButton)
radioGroup2.check(R.id.radioButton2)
어플리케이션의 기능을 ON/OFF할 수 있도록 제공하는 view
setOnCheckedChangeListener { buttonView, isChecked ->
if(isChecked){
textView.text = "Toggle 버튼 ON 상태"
} else {
textView.text = "Toggle 버튼 OFF 상태"
}
}
ON/OFF 상태를 좌우로 이동하면서 설정하는 view
setOnCheckedChangeListener { buttonView, isChecked ->
if(isChecked){
textView.append("Switch ON 상태")
} else {
textView.append("Switch OFF 상태")
}
}
checkBox, radioButton을 커스터마이징 할 수 있는 view
- checkBox
- 다중 선택 가능
if(checkedTextView.isChecked){ textView.append("CheckBox1 체크") } else { textView.append("CheckBox1 체크 X") }
- radioButton
- 다중 선택 불가능
if(checkedTextView1.isChecked){ textView.append("Radio1 선택") } else if(checkedTextView2.isChecked){ textView.append("Radio2 선택") } else if(checkedTextView3.isChecked){ textView.append("Radio3 선택) }
- checkBox
- 다중 선택 가능
setOnClickListener { checkedTextView.isChecked = true checkedTextView2.isChecked = true }
- radioButton
- 다중 선택 불가능
// 초기값 설정 checkedTextView3.isChecked = true checkedTextView1.run{ setOnClickListener { checkedTextView1.isChecked = true checkedTextView2.isChecked = false checkedTextView3.isChecked = false } } checkedTextView2.run{ setOnClickListener { checkedTextView1.isChecked = false checkedTextView2.isChecked = true checkedTextView3.isChecked = false } } checkedTextView3.run { setOnClickListener { checkedTextView1.isChecked = false checkedTextView2.isChecked = false checkedTextView3.isChecked = true } }
button, checkBox, radioButton 등의 기능을 가지고 있는 view
ChipGroup
주요 속성
- singleSelection : 내부 chip 중 하나만 선택하게 할 것인가 설정
- true : 1개만 선택 가능
- false : 중복 선택 가능
- checkedChip : 체크 상태로 설정할 버튼 설정
주요 메서드
- getCheckedChipId : 그룹 내에 선택되어 있는 chip ID
when (chipGroup.checkedChipId) { R.id.chip1 -> { textView.append("라디오1 선택") } R.id.chip2 -> { textView.append("라디오2 선택") } R.id.chip3 -> { textView.append("라디오3 선택") } }
주요 이벤트
- CheckedChange : 그룹 내부 chip의 체크 상태가 변경되었을 때 발생
작업 중을 표시하는 view
textView.text = "ProgressBar : ${progressBar.progress}"
progressBar.progress = 70
progressBar + 사용자가 직접 값을 지정할 수 있는 기능을 가진 view
textView.text = "SeekBar : ${seekBar.progress}"
seekBar.progress = 70
seekBar.run {
setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(
seekBar: SeekBar?,
progress: Int,
fromUser: Boolean
) {
if(fromUser){
textView.text = "사용자에 의해 변경"
} else {
textView.text = "코드를 통해 변경"
}
}
override fun onStartTrackingTouch(seekBar: SeekBar?) {}
override fun onStopTrackingTouch(seekBar: SeekBar?) {}
})
}
별점을 조절할 수 있는 view
textView.text = "RatingBar : ${ratingBar.rating}"
ratingBar.rating = 1.5F
ratingBar.run{
setOnRatingBarChangeListener { ratingBar, rating, fromUser ->
if(fromUser){
textView.text = "사용자에 의해 변경"
} else {
textView.text = "코드를 통해 변경"
}
}
}
view를 그룹으로 관리 + 자체 그림자를 생성에 공중에 있는 듯한 모습을 보여주는 view
공중에 있는 버튼 view
floatingActionButton.run{
setOnClickListener {
textView.text = "버튼 클릭"
}
}