๊ด€๋ฆฌ ๋ฉ”๋‰ด

Welcome! Everything is fine.

[Android] ๋ทฐ(View)์™€ ๋ทฐ์˜ ํฌ๊ธฐ ์†์„ฑ ๋ณธ๋ฌธ

Android

[Android] ๋ทฐ(View)์™€ ๋ทฐ์˜ ํฌ๊ธฐ ์†์„ฑ

๊ฐœ๋ฐœ๊ณฐ๋ฐœ 2022. 2. 17.
728x90

๐Ÿ“Œ ๋ทฐ์˜ ์†์„ฑ

  • ๋ทฐ(View) : ์‚ฌ์šฉ์ž ๋ˆˆ์— ๋ณด์ด๋Š” ํ™”๋ฉด์˜ ๊ตฌ์„ฑ์š”์†Œ. ์ปจํŠธ๋กค or ์œ„์ ฏ์ด๋ผ๊ณ  ๋ถˆ๋ฆผ.
  • ๋ทฐ๊ทธ๋ฃน(ViewGroup) : ๋ทฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ, ๋˜๋‹ค๋ฅธ ๋ทฐ๊ทธ๋ฃน๋„ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ. ๋ทฐ๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง. ๋ทฐ๊ทธ๋ฃน ์•ˆ์—์„œ ๋ทฐ์˜ ์œ„์น˜ ์ง€์ • ๊ฐ€๋Šฅ.

๐Ÿ“Œ ์œ„์ ฏ๊ณผ ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๊ตฌ๋ณ„๋˜๋Š” ๋ทฐ

๊ฐ๊ฐ์˜ ์—ญํ• ์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ทฐ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.

  • ์œ„์ ฏ(Widget) : ๋ทฐ ์ค‘์—์„œ ํ™”๋ฉด์— ๋ณด์ด๋ฉด์„œ ์ผ๋ฐ˜์ ์ธ ์ปจํŠธ๋กค์˜ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ.
  • ๋ ˆ์ด์•„์›ƒ(Layout) : ๋ทฐ๊ทธ๋ฃน ์ค‘์—์„œ ๋‚ด๋ถ€์— ๋ทฐ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉด์„œ ๊ทธ๊ฒƒ๋“ค์„ ๋ฐฐ์น˜ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ.

โœ” ์ •๋ฆฌ

๋ทฐ : ํ™”๋ฉด ๊ตฌ์„ฑ ์š”์†Œ

์œ„์ ฏ : ์‚ฌ์šฉ์ž ๋ˆˆ์— ๋ณด์ด๋Š” ์ปจํŠธ๋กค ์—ญํ• ์„ ํ•˜๋Š” ๋ทฐ

๋ทฐ๊ทธ๋ฃน : ๋ทฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ทธ๋ฆ‡

๋ ˆ์ด์•„์›ƒ : ๋ทฐ๊ทธ๋ฃน ์•ˆ์˜ ๋ทฐ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ

๐Ÿ“Œ ๋ทฐ์˜ ํฌ๊ธฐ ์†์„ฑ

๋ชจ๋“  ๋ทฐ๋Š” ๋ฐ˜๋“œ์‹œ ํฌ๊ธฐ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ทฐ๋Š” ํ™”๋ฉด์˜ ์ผ์ • ์˜์—ญ์„ ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋งŒ์•ฝ ๋ทฐ์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ํฌ๊ธฐ ์†์„ฑ์ด ์—†์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค.

ํ…์ŠคํŠธ ๋ทฐ๋Š” XML ๋ ˆ์ด์•„์›ƒ์—์„œ ์œ„์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด์ž๋ฉด,

  • <TextView>ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ…์ŠคํŠธ๋ทฐ๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„ android: ๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์•ž์— ๋ถ™์–ด์žˆ์œผ๋ฉฐ, ์ด๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ ๊ธฐ๋ณธ API์—์„œ ์ •์˜ํ•œ ์†์„ฑ์ด๋ผ๋Š” ๋œป์ด๋‹ค.
  • ๊ณตํ†ต๋œ ์†์„ฑ์€ layout_width์™€ layout_height๋กœ, ๋ทฐ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๋‚ด๋ถ€ ์†์„ฑ ์ค‘ ํ•„์ˆ˜ ์†์„ฑ์ด๋‹ค. ๋ทฐ๊ฐ€ ํ™”๋ฉด ์•ˆ์— ๋“ค์–ด์žˆ์œผ๋ ค๋ฉด ๋ทฐ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ๊ฐ€๋กœ, ์„ธ๋กœ์˜ ํฌ๊ธฐ ๊ฐ’์œผ๋กœ๋Š” ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
๊ตฌ๋ถ„ ์„ค๋ช…
wrap_content ๋ทฐ์— ๋“ค์–ด ์žˆ๋Š” ๋‚ด์šฉ๋ฌผ์˜ ํฌ๊ธฐ์— ์ž๋™์œผ๋กœ ๋งž์ถ˜๋‹ค.
match_parent ๋ทฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ทฐ๊ทธ๋ฃน์˜ ์—ฌ์œ ๊ณต๊ฐ„์„ ๊ฝ‰ ์ฑ„์šด๋‹ค.
์ˆซ์ž๋กœ ํฌ๊ธฐ ์ง€์ • ์ˆซ์ž + dp๋‚˜ px์™€ ๊ฐ™์€ ๋‹จ์œ„๋ฅผ ์‚ฌ์šฉํ•ด ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค.

๐Ÿ“Œ ๋ฒ„ํŠผ์˜ ํฌ๊ธฐ ์†์„ฑ ๋ฐ”๊พธ๊ธฐ

layout_width์™€ layout_height์˜ ์†์„ฑ์„ ๋ฐ”๊ฟ”๋ณด์•˜๋‹ค. ๋‘˜ ๋‹ค wrap_content๋กœ ๋˜์–ด์žˆ์„ ๋•Œ๋Š” ํ…์ŠคํŠธ์— ๋งž๊ฒŒ ๋ฒ„ํŠผ์˜ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๊ณ , layout_width๋ฅผ 240dp๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ๋Š” ๊ฐ€๋กœ์˜ ๊ธธ์ด๊ฐ€ ๋” ๊ธธ์–ด์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ชจ๋‘ wrap_content๋กœ ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ(์ขŒ) / layout_width๋ฅผ 240dp๋กœ ํ•œ ๊ฒฝ์šฐ(์šฐ)

๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๋ฐ”๊ฟ€๊ฒฝ์šฐ, ์™ผ์ชฝ ํ•˜๋‹จ์— Component Tree์ฐฝ์—์„œ ConstraintLayout ํ•ญ๋ชฉ์— ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ , [Convert view...] ๋ฉ”๋‰ด๋ฅผ ์„ ํƒํ•œ๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋œจ๋Š”๋ฐ, LinearLayout์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ ๋‚˜์„œ ๋ชจ๋‘ match_parent๋กœ ๋ฐ”๊พธ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

LinearLayout์—์„œ match_parent๋กœ ๋ฐ”๊พผ ๊ฒฝ์šฐ

๋”ฐ๋ผ์„œ, ๋™์ผํ•œ ์†์„ฑ์ด๋ผ๋„ ๋ทฐ(๋ฒ„ํŠผ)์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋ ˆ์ด์•„์›ƒ์ด ์–ด๋–ค ๊ฒƒ์ธ์ง€์— ๋”ฐ๋ผ์„œ ๋ทฐ์— ์ ์šฉ๋˜๋Š” ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง„๋‹ค. ๋˜ํ•œ ๊ฐ๊ฐ์˜ ๋ ˆ์ด์–ด๋งˆ๋‹ค ํ•„์ˆ˜ ์†์„ฑ๋„ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๋‹ค.