๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
APP/ANDROID

[๋ถ€์ŠคํŠธ์ฝ”์Šค]๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ

by mingzoo 2020. 2. 5.

์˜ค๋Š˜์€ ๋ถ€์ŠคํŠธ์ฝ”์Šค์˜ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐ•์˜์˜ ์ฒซ๋ฒˆ์งธ ๋ถ€๋ถ„์ธ ๋ ˆ์ด์•„์›ƒ๋งŒ๋“ค๊ธฐ๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค.

๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•ด์„œ๋Š” ์•ž์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์ˆ˜์›”ํ•  ๊ฒƒ ๊ฐ™๋‹ค!

(์•ž ๊ธ€ ๋งํฌ ์ฐธ๊ณ : https://minjoo-space.tistory.com/2)

์ด ๊ฐ•์˜์—์„œ ๋ฐฐ์šฐ๋Š” ๋ ˆ์ด์•„์›ƒ๋“ค์˜ ์ข…๋ฅ˜์ด๋‹ค.


์ œ์•ฝ ๋ ˆ์ด์•„์›ƒ(Constraint Layout)

์•ˆ๋“œ๋กœ์ด๋“œ ์ŠคํŠœ๋””์˜ค์—์„œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด ๋จผ์ € ๋‚˜์˜ค๋Š” ๋””ํดํŠธ ๋ ˆ์ด์•„์›ƒ

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ, ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ XML ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ์ธ activity_main.xml ํŒŒ์ผ์„ ์—ด์–ด๋ณด๋ฉด ๋ฐ”๊นฅ์— ์žˆ๋Š” ์ตœ์ƒ์œ„ ํƒœ๊ทธ๊ฐ€ ConstraintLayout์ธ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

activity_main.xml์—์„œ Design๋ถ€๋ถ„์—์„œ button์„ ๋งŒ๋“ค์–ด์„œ ๋ฒ„ํŠผ์˜ ์ ๋“ค์„ ๊ธฐ์ค€์ด ๋˜์–ด ์ œ์•ฝ์„ ๊ฑธ ๋ถ€๋ชจ ๋ ˆ์ด์•„์›ƒ์— ์—ฐ๊ฒฐํ•ด ์ฃผ๋ฉด๋œ๋‹ค.

์—ฐ๊ฒฐ์„ ์€ ๋ทฐ์˜ ์ƒ, ํ•˜, ์ขŒ, ์šฐ์— ์žˆ๋Š” ์—ฐ๊ฒฐ์ ์„ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ์œ„์ ฏ์˜ ์ƒ,ํ•˜,์ขŒ,์šฐ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ œ์•ฝ๋ ˆ์ด์•„์›ƒ์—์„œ์˜ ์ฃผ์˜ํ•  ์ 

์—ฐ๊ฒฐ์„ ์€ ๊ทธ ๋ทฐ์˜ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•  ๋งŒํผ ๋งŒ๋“ค์–ด์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ!

์˜ˆ)๋งŒ์•ฝ ์ƒ, ํ•˜ ์—ฐ๊ฒฐ์„ ์„ ๋ชจ๋‘ ๋ถ€๋ชจ ๋ ˆ์ด์•„์›ƒ๊ณผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ๊ทธ ๋ทฐ๋Š” ๋ถ€๋ชจ ๋ ˆ์ด์•„์›ƒ์˜ ๊ฐ€์šด๋ฐ ์ง€์ ์— ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ƒ, ํ•˜๋กœ ์ด์–ด์ง„ ์„ ์˜ ์ค‘๊ฐ„ ์ง€์ ์ด์ฃ .

์ƒ, ํ•˜, ์ขŒ, ์šฐ ๋ชจ๋‘ ๋ถ€๋ชจ ๋ ˆ์ด์•„์›ƒ๊ณผ ์—ฐ๊ฒฐํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

ํ™”๋ฉด์˜ ๊ฐ€์šด๋ฐ ๋ถ€๋ถ„์— ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ(Linear Layout)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" 
  android:layout_width="match_parent"
  android:layout_height="match_parent"
>

LinearLayout์ด๋ผ๊ณ  ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„์ด ์›๋ž˜๋Š” ์ œ์•ฝ๋ ˆ์ด์•„์›ƒ์ด์—ˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ ˆ์ด์•„์›ƒ์„ ์“ธ ๊ฒฝ์šฐ์— ์ˆ˜์ •ํ•˜๋ฉด๋œ๋‹ค.

*layout_gravity

์ž์‹ ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ถ€๋ชจ ์œ„์ ฏ ๋ ˆ์ด์•„์›ƒ์—์„œ ์˜ต์…˜๊ฐ’์— ๋”ฐ๋ผ ์ •๋ ฌ

์ด View์˜ gravity ์†์„ฑ์„ ์กฐ์ ˆํ•˜๊ฒŒ ๋˜๋ฉด View ๋‚ด๋ถ€์˜ content์˜ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด์™€ ๋‹ฌ๋ฆฌ layout_gravity๋ฅผ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด View๋ฅผ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” LinearLayout๊ณผ ๊ฐ™์€ ์ƒ์œ„ View๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ–ˆ์„ ๋•Œ View์˜ ์œ„์น˜๋ฅผ ์„ค์ •ํ•˜๊ฒŒ ๋œ๋‹ค.


๋งˆ์ง„(margin), ํŒจ๋”ฉ(padding)

๋งˆ์ง„(margin) : ๋ทฐ์˜ ํ…Œ๋‘๋ฆฌ์„  ๋ฐ”๊นฅ์ชฝ ๊ณต๊ฐ„์„ ์–ผ๋งˆ๋‚˜ ๋„์šธ ๊ฒƒ์ธ์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ

ํŒจ๋”ฉ(padding) : ๋ทฐ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋‚ด์šฉ๋ฌผ์„ ํ…Œ๋‘๋ฆฌ ์„ ๊ณผ ์–ผ๋งˆ๋‚˜ ๋„์šธ ๊ฒƒ์ธ์ง€๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ

                     ๋ฒ„ํŠผ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๊ธ€์ž๊ฐ€ ํ…Œ๋‘๋ฆฌ์„ ๊ณผ ๋„ˆ๋ฌด ๋ถ™์–ด์žˆ๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ ๋‹ค๋ฉด ์ด ์†์„ฑ์„ ์‚ฌ์šฉํ•ด ๊ณต๊ฐ„์„ ๋„์›Œ์ค„ ์ˆ˜ ์žˆ๋‹ค.


์ƒ๋Œ€ ๋ ˆ์ด์•„์›ƒ(Relative Layout)

๋ทฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ถ€๋ชจ ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ๊ทธ ์•ˆ์— ๋“ค์–ด์žˆ๋Š” ๋‹ค๋ฅธ ๋ทฐ๋“ค๊ณผ์˜ ์ƒ๋Œ€์  ์œ„์น˜๋ฅผ ์ด์šฉํ•ด ํ™”๋ฉด์„ ๋ฐฐ์น˜ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ

ํ™”๋ฉด์˜ ์•„๋ž˜์ชฝ์— ๋ฒ„ํŠผ์„ ๋ถ™์ด๊ณ  ์‹ถ๋‹ค!

=>layout_alignParentBottom = "true"๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ถฉ๋ถ„

๋ฆฌ๋‹ˆ์–ด ๋ ˆ์ด์•„์›ƒ์˜ ๊ฒฝ์šฐ์—๋Š” ์œ„์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์Œ“์•„์•ผ ๊ฐ€์žฅ ์•„๋ž˜์ชฝ๊นŒ์ง€ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ƒ๋Œ€ ๋ ˆ์ด์•„์›ƒ์€ ์œ„์— ์•„๋ฌด๊ฒƒ๋„ ์—†์–ด๋„ ํ™”๋ฉด์˜ ๊ฐ€์žฅ ์•„๋ž˜์ชฝ์— ๋ทฐ๋ฅผ ๋ถ™์—ฌ๋‘˜ ์ˆ˜ ์žˆ๋‹ค!!


***์œ„,์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋‘๊ณ  ๊ฐ€์šด๋ฐ ๋ฒ„ํŠผ์ด ๊ฝ‰ ์ฐจ๊ฒŒ ๋งŒ๋“ค๊ธฐ

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >

<Button
  android:id="@+id/button1"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="Button"
  android:layout_alignParentTop="true" />

<Button
  android:id="@+id/button2"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="Button"
  android:layout_alignParentBottom="true" />

<Button
  android:id="@+id/button3"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_below="@+id/button1"
  android:layout_above="@+id/button2"
  android:text="Button" />

</RelativeLayout>

<๊ฒฐ๊ณผ>

 

 

 

728x90