๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป Extracurricular/์ฝ”๋ฎค๋‹ˆํ‹ฐ ๋ชจ๊ฐ์ฝ”

๋ชจ๊ฐ์ฝ” < Kotlin ๊ธฐ์ดˆํŽธ > - 5์ผ์ฐจ

โœ… Layout์ด๋ž€?

: ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ(View)๋ฅผ ๋ฌถ์–ด์ฃผ๋Š” ๋ทฐ ๊ทธ๋ฃน

  • Layout์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋‹ค๋ฅด๊ฒŒ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ์Œ

โœ… Layout์˜ ์ข…๋ฅ˜

โšก Linear Layout

: ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ฐจ๋ก€๋Œ€๋กœ ๋‚˜์—ด

 

๐Ÿ‘€ Linear Layout ์˜ orientation ์†์„ฑ

  • vertical - ์„ธ๋กœ๋กœ ๋‚˜์—ด
  • horizontal - ๊ฐ€๋กœ๋กœ ๋‚˜์—ด

 

 

 

๋ณต์žกํ•œ ๋ ˆ์ด์•„์›ƒ๋ณด๋‹ค๋Š”

๋‹จ์ˆœํ•œ ๋ฆฌ์ŠคํŠธ (์ƒํ•˜ ์Šคํฌ๋กค, ์ขŒ์šฐ ์Šคํฌ๋กค) ๋ทฐ์ผ ๋•Œ Linear Layout ์„ ์‚ฌ์šฉ!

 

โšก Frame Layout

: ์•ก์ž ์•ˆ์— ๊ทธ๋ฆผ์„ ๋ผ์šฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ปดํฌ๋„ŒํŠธ ๋ฐฐ์น˜

  • Frame Layout์— ๋ฐฐ์น˜ํ•œ ๊ฒƒ ์ค‘์— ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ณด์ž„.
  • ๋ฐฐ์น˜๋ณด๋‹ค๋Š” ๋‹ค๋ฅธ ์šฉ๋„(Web view ์šฉ ๋ ˆ์ด์•„์›ƒ ๋“ฑ)๋ฅผ ์œ„ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ

โšก Constraint Layout

: ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํ•˜์ขŒ์šฐ์— ํ•„์š”ํ•œ ์ œ์•ฝ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์›ํ•˜๋Š” ์œ„์น˜์— ๋ฐฐ์น˜

 

๐Ÿ‘€ Relative Layout vs Constraint Layout

 

๐Ÿ“› ๊ตฌ๊ธ€์—์„œ๋Š” Constraint Layout ์„ ๊ถŒ์žฅ

why?

  1. Relative Layout ์— ๋น„ํ•ด Constraint Layout ์ด ๋” ์ตœ๊ทผ์— ๋งŒ๋“ค์–ด์ง
  2. Relative Layout + Linear Layout ์˜ ์žฅ์  => Constraint Layout
  3. Layout ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์ค‘์ฒฉ๋˜์—ˆ์„ ๋•Œ ๋ฐ˜์‘, ์ฒ˜๋ฆฌ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฆ„

โœ… Constraint Layout ์‚ฌ์šฉ๋ฐฉ๋ฒ•

ex) ๋ฒ„ํŠผ์„ ์•„๋ž˜์˜ ํ™”๋ฉด์ฒ˜๋Ÿผ ์šฐ์ธก ํ•˜๋‹จ์— ๋ฐฐ์น˜ํ•œ ์ฝ”๋“œ

๐Ÿ‘€ 13 ~ 14๋ฒˆ ์ค„ ์ง‘์ค‘!!

 

โšก layout_constraintBottom_toBottomOf=”parent”

๐Ÿ‘€ ์ปดํฌ๋„ŒํŠธ์˜ bottom(ํ•˜๋‹จ)์„ parent(๋ถ€๋ชจ ์š”์†Œ)์˜ bottom(ํ•˜๋‹จ)์— ๋งž์ถ˜๋‹ค .

 

โšก layout_constraintEnd_toEndOf=”parent”

๐Ÿ‘€ ์ปดํฌ๋„ŒํŠธ์˜ end(์˜ค๋ฅธ์ชฝ)์„ parent(๋ถ€๋ชจ ์š”์†Œ)์˜ end(์˜ค๋ฅธ์ชฝ)์— ๋งž์ถ˜๋‹ค.

 

Button์˜ ๋ถ€๋ชจ ์š”์†Œ = Constraint Layout

-> ํ™”๋ฉด์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ๊ณผ ํ•˜๋‹จ์— ๋ฐฐ์น˜๋จ

 

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฐฐ์น˜ํ•˜๋ฉด ๋ ˆ์ด์•„์›ƒ ์—๋””ํ„ฐ ํˆด์˜ ๋””์ž์ธ ๋ชจ๋“œ์—์„œ

Constraint๊ฐ€ ์ƒ๊ธด ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ!

 

โšก ๋งŒ์•ฝ ์šฐ์ธก๊ณผ ํ•˜๋‹จ์— ์—ฌ๋ฐฑ์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด?

: ์—ฌ๋ฐฑ์„ ์›ํ•˜๋Š” ์ˆซ์ž๋กœ ๋ฐ”๊พธ๋ฉด ๋จ.

 

๐Ÿ‘€ ์ฝ”๋“œ

 

โšก parent๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์š”์†Œ์™€์˜ ๊ด€๊ณ„๋ฅผ ์ œ์•ฝ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€?

๐Ÿ‘€ 14๋ฒˆ ์ค„ ์ง‘์ค‘!

” layout_constraintBottom_toTopOf=”@+id/button4 “

=> ์ด๊ฒƒ์€ ์ปดํฌ๋„ŒํŠธ์˜ ํ•˜๋‹จ(bottom)์„

โ€‹ button4๋ผ๋Š” ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ์ปดํฌ๋„ŒํŠธ ์œ„(top)๋กœ ๋ฐฐ์น˜ํ•œ๋‹ค๋Š” ์˜๋ฏธ

 

๐Ÿ‘€ 19๋ฒˆ ์ค„ ์ง‘์ค‘!

android:id=”@+id/button4” : ๋ฐ”๋กœ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ id๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ์ฝ”๋“œ

 

๐Ÿ“› ํ”„๋กœ์ ํŠธ ์•ˆ์— ๊ณ ์œ ํ•œ id๋ฅผ ๋ถ€์—ฌํ•˜๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์ œ์•ฝ์„ ์ฃผ๋Š” ๊ฒƒ!

< ํ”„๋กœ์ ํŠธ ์•ˆ์—์„œ id ์ด๋ฆ„์€ ๊ฒน์น˜๋ฉด ์•ˆ๋จ >

โœ” ์ƒ = top

โœ” ํ•˜ = bottom

โœ” ์ขŒ = start (=left ; sdk ๋ฒ„์ „์ด ๋‚ฎ์„ ๊ฒฝ์šฐ left ์‚ฌ์šฉ)

โœ” ์šฐ = end (=right ; sdk ๋ฒ„์ „์ด ๋‚ฎ์„ ์ˆ˜๋ก right ์‚ฌ์šฉ)

 

โšก layout_constraintTop_toBottomOf=”A”

๐Ÿ‘€ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒ๋‹จ์„ A ์ปดํฌ๋„ŒํŠธ์˜ ํ•˜๋‹จ์— ๋งž์ถ˜๋‹ค.

 

โšก layout_constraintStart_toEndOf=”A”

๐Ÿ‘€ ์ปดํฌ๋„ŒํŠธ์˜ ์ขŒ์ธก์„ A ์ปดํฌ๋„ŒํŠธ์˜ ์šฐ์ธก์— ๋งž์ถ˜๋‹ค.


โœ… ์˜ค๋Š˜์˜ ๋ฌธ์ œ : ๋ฒ„ํŠผ ๋งŒ๋“ค๊ธฐ

codemate_@guswlsdl04 โ—€ CLICK HERE!