λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
βœ’οΈ Android/Android Studio

[Android] 20. μœ„μ ― : μ»΄νŒŒμš΄λ“œ λ²„νŠΌ (Compound Button)

by A Lim Han 2023. 1. 11.

# μœ„μ ― : μ»΄νŒŒμš΄λ“œ λ²„νŠΌ (Compound Button)

 

 

# μœ„μ ― : μ»΄νŒŒμš΄λ“œ λ²„νŠΌ (Compound Button)

 

- Compound Button 클래슀

: Button 클래슀의 ν•˜μœ„ 클래슀둜 체크 λ°•μŠ€λ‚˜ λΌλ””μ˜€ λ²„νŠΌ, μŠ€μœ„μΉ˜ 및 ν† κΈ€ λ²„νŠΌμ˜ μƒμœ„ ν΄λž˜μŠ€μ΄λ‹€.

 

 

 

- 체크 λ°•μŠ€

: 클릭할 λ•Œλ§ˆλ‹€ μƒνƒœκ°€ 언체크, 체크둜 변경됨

-->  μ—¬λŸ¬ 개의 체크 λ°•μŠ€κ°€ μžˆμ–΄λ„ μ„œλ‘œ λ…λ¦½μ μœΌλ‘œ μž‘λ™ν•˜μ—¬ λ™μ‹œμ— μ—¬λŸ¬ 개의 λ°•μŠ€λ₯Ό 체크할 수 μžˆλ‹€.

 

+ 체크 & 언체크 λ³€κ²½ μ‹œ Kotlin μ½”λ“œμ˜ 처리 절차

β‘  체크 λ°•μŠ€ λ³€μˆ˜ μ„ μ–Έ

var mycheck : CheckBox

 

β‘‘ μƒμ„±ν•œ λ³€μˆ˜μ— μ²΄ν¬λ°•μŠ€ μœ„μ ―μ„ λŒ€μž…

mycheck = findViewByid<CheckBox>(R.id.android)

 

β‘’ 체크 λ°•μŠ€ λ³€κ²½ μ‹œ λ™μž‘ν•˜λŠ” λžŒλ‹€μ‹ μ •μ˜

mycheck.setOnCheckedChangeListener { compoundButton, b ->
	//λ™μž‘ λ‚΄μš©
}

 

 

+ 체크 λ°•μŠ€ 선택 μ‹œ ν† μŠ€νŠΈ λ©”μ‹œμ§€ 좜λ ₯

-->  ν† μŠ€νŠΈ λ©”μ‹œμ§€: ν™”λ©΄μ˜ ν•˜λ‹¨μ— λ©”μ‹œμ§€λ₯Ό μž μ‹œ λ³΄μ—¬μ£ΌλŠ” λ°©μ‹μœΌλ‘œ, μ•„λž˜μ˜ λ©”μ†Œλ“œ μ‚¬μš©

Toast:makeText(Context context, String message, int duration).show()

 

 

ex) μ‹€μŠ΅ 1_체크 λ°•μŠ€μ— λ¦¬μŠ€λ„ˆ μΆ”κ°€ν•˜κΈ°

1. 컨슀트레인트 λ ˆμ΄μ•„μ›ƒμ— λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ„ ν™”λ©΄ κ°€μš΄λ° μœ„μΉ˜λ‘œ λ°°μΉ˜ν•œ ν›„, 체크 λ²„νŠΌ 3개λ₯Ό μΆ”κ°€

 

 

2. λ°°μΉ˜ν•œ λ ˆμ΄μ•„μ›ƒμ— text, id 속성 μž…λ ₯

 

 

3. λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ˜ layout_width, layout_height 속성을 λͺ¨λ‘ wrap_content둜 λ³€κ²½ν•˜κΈ°

 

 

4. MainActivity.kt 파일의 μ½”λ“œλ₯Ό μ•„λž˜μ™€ 같이 μˆ˜μ •ν•˜κΈ°

 

 

5. ν”„λ‘œκ·Έλž¨μ˜ 정상 μž‘λ™ μ—¬λΆ€ ν™•μΈν•˜κΈ°

μ •μƒμ μœΌλ‘œ μž‘λ™λ¨μ„ 확인

 

 

 

- μŠ€μœ„μΉ˜ λ²„νŠΌκ³Ό 토클 λ²„νŠΌ

: μŠ€μœ„μΉ˜, 토클 λ²„νŠΌμ€λͺ¨μ–‘은 μƒμ΄ν•˜λ‚˜ μš©λ„λŠ” 거의 동일함

 

+ μŠ€μœ„μΉ˜ λ²„νŠΌμ˜ 경우 μ£Ό μš©λ„λŠ” 온/μ˜€ν”„ μƒνƒœ ν‘œμ‹œ

-->  XML μ†μ„±μ΄λ‚˜ κ΄€λ ¨ λ©”μ†Œλ“œλŠ” λͺ¨λ‘ μ²΄ν¬λ°•μŠ€μ™€ λ™μΌν•˜κ²Œ μ‚¬μš© κ°€λŠ₯

-->  checked 속성은 false, true 값에 λ”°λΌμ„œ 색상 및 κΈ€μžκ°€ λ‹€λ₯΄κ²Œ ν‘œν˜„λ¨

 

 

 

- λΌλ””μ˜€ λ²„νŠΌ

: XML 속성 및 λ©”μ†Œλ“œκ°€ 체크 λ°•μŠ€μ™€ μœ μ‚¬ν•˜μ§€λ§Œ, λΌλ””μ˜€ λ²„νŠΌμ˜ 경우 λ‹€μˆ˜μ˜ 선택지 쀑 ν•˜λ‚˜λ§Œμ„ 선택해야 ν•˜λŠ” κ²½μš°μ— μ‚¬μš©ν•œλ‹€λŠ” μ μ—μ„œ 차이가 있음

-->  각 λΌλ””μ˜€ λ²„νŠΌμ˜ id 속성이 μ—†λŠ” 경우 ν•΄λ‹Ή λΌλ””μ˜€ λ²„νŠΌμ΄ 계속 μ„ νƒλœ κ²ƒμœΌλ‘œ μ§€μ •λ˜μ–΄ ν•΄μ œλ˜μ§€ μ•ŠμœΌλ―€λ‘œ λ°˜λ“œμ‹œ μ‘΄μž¬ν•΄μ•Ό 함

 

+ λΌλ””μ˜€ λ²„νŠΌμ„ μ—¬λŸ¬ 개 λ‚˜μ—΄ν•˜λŠ” 경우 ν΄λ¦­ν•˜λŠ” μš”μ†Œλ§ˆλ‹€ λͺ¨λ‘ μ„ νƒλ˜λŠ” 것을 λ°©μ§€ν•˜κΈ° μœ„ν•΄ λΌλ””μ˜€ κ·Έλ£Ήκ³Ό ν•¨κ»˜ μ‚¬μš©

 

 

 

- λΌλ””μ˜€ κ·Έλ£Ή

: ViewGroup-LinearLayout의 ν•˜μœ„ 클래슀둜 μ‘΄μž¬ν•˜λ©°, λΌλ””μ˜€ λ²„νŠΌμ„ λ¬ΆκΈ° μœ„ν•΄ μ‚¬μš©

 

+ λΌλ””μ˜€ κ·Έλ£Ήμ—μ„œ μ‚¬μš©ν•˜λŠ” λ©”μ†Œλ“œ: clearCheck()

-->  ν•΄λ‹Ή λΌλ””μ˜€ κ·Έλ£Ή 속 체크된 μš”μ†Œλ“€μ„ λͺ¨λ‘ ν•΄μ œν•¨

 

 

ex) μ‹€μŠ΅_λΌλ””μ˜€ κ·Έλ£Ήκ³Ό λΌλ””μ˜€ λ²„νŠΌ μ‚¬μš©ν•˜κΈ°

1. νŒ”λ ˆνŠΈλ₯Ό μ΄μš©ν•˜μ—¬ 1개의 λΌλ””μ˜€ κ·Έλ£Ήκ³Ό 3개의 λΌλ””μ˜€ λ²„νŠΌ μΆ”κ°€ν•˜κΈ°

 

 

2. λΌλ””μ˜€ 그룹에 λŒ€ν•œ id λΆ€μ—¬ν•˜κΈ°

 

 

3. λΌλ””μ˜€ λ²„νŠΌμ˜ id와 textλ₯Ό μ•„λž˜μ™€ 같이 μˆ˜μ •ν•˜κΈ°

 

 

4. MainActivity.kt νŒŒμΌμ˜ μ½”λ“œλ₯Ό μ•„λž˜μ™€ 같이 μˆ˜μ •ν•˜κΈ°

 

 

5. ν”„λ‘œκ·Έλž¨μ˜ 정상 μž‘λ™ μ—¬λΆ€ ν™•μΈν•˜κΈ°

+ ν•˜λ‚˜μ˜ μš”μ†Œλ§Œ 선택할 수 μžˆμŒμ„ 확인