๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ 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. ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ ์ž‘๋™ ์—ฌ๋ถ€ ํ™•์ธํ•˜๊ธฐ

+ ํ•˜๋‚˜์˜ ์š”์†Œ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธ