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

[Android] 13. λ ˆμ΄μ•„μ›ƒ : λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒκ³Ό 속성

by A Lim Han 2023. 1. 8.

# λ ˆμ΄μ•„μ›ƒ : λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„웃과 μ†μ„±

 

 

# λ ˆμ΄μ•„μ›ƒ : λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒ

: μœ„μ ―μ„ κ°€λ‘œ λ˜λŠ” μ„Έλ‘œ ν•œ μ€„λ‘œ λ°°μΉ˜ν•˜κΈ° μœ„ν•œ λ ˆμ΄μ•„μ›ƒμœΌλ‘œ, λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ˜ μ†μ„±λ§Œ 변경해주어도 기쑴에 λ°°μΉ˜λ˜μ–΄ 있던 μœ„μ ―λ“€μ˜ λ°©ν–₯ 변경이 κ°€λŠ₯ν•˜λ‹€.

 

 

 

- λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ˜ μ‚¬μš©λ²•

1. UI νŽΈμ§‘κΈ° 우츑 상단에 μžˆλŠ” [Code] λ²„νŠΌ 클릭 ν›„ λͺ¨λ“œ λ³€κ²½

 

2. 화면이 XML μ½”λ“œλ₯Ό 직접 νŽΈμ§‘ κ°€λŠ₯ν•œ λͺ¨μ–‘μœΌλ‘œ λ³€κ²½

 

3. XML μ½”λ“œμ˜ 2행을 μ•„λž˜μ™€ 같이 μˆ˜μ •

'androidx.constraintlayout.widget.ConstraintLayout'  --> .'LinearLayout'

λ³€κ²½ μ „
λ³€κ²½ ν›„

 

4. λ‹€μ‹œ 우츑 μƒλ‹¨μ˜ [Design] λ²„νŠΌ 클릭 ν›„ λͺ¨λ“œ λ³€κ²½

-->  μ»΄ν¬λ„ŒνŠΈ 트리의 μ΅œμƒμœ„ λ ˆμ΄μ•„μ›ƒμ΄ λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμœΌλ‘œ 변경됨을 확인 κ°€λŠ₯

 

 

 

- 쀑볡 λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ˜ ν˜•νƒœ

: ν•œ ν™”λ©΄μ—μ„œ μœ„μ ―μ„ μˆ˜ν‰κ³Ό 수직으둜 λ‹€μ–‘ν•˜κ²Œ λ°°μΉ˜ν•΄μ•Ό ν•˜λŠ” κ²½μš°μ—λŠ” λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒ μ•ˆμ— λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ„ μƒμ„±ν•˜λŠ” 방식 이용

-->  λ°–μ˜ 큰 λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ„ 3개의 μž‘μ€ λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμœΌλ‘œ λΆ„λ₯˜ν•œ ν›„ 각 λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒ μ•ˆμ— ν•„μš”ν•œ μœ„μ ―μ„ λ°°μΉ˜ν•˜λŠ” 방식

 

 

 

 

# λ ˆμ΄μ•„μ›ƒ : λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ˜ 속성

 

- μ£Όμš” 속성

orientation λ ˆμ΄μ•„μ›ƒ μ•ˆμ— λ°°μΉ˜ν•  μœ„μ ―μ˜ 수직, μˆ˜ν‰ λ°©ν–₯ μ„€μ •
gravity λ ˆμ΄μ•„μ›ƒ μ•ˆμ— λ°°μΉ˜ν•  μœ„μ ―μ˜ μ •λ ¬ λ°©ν–₯ μ„€μ •
layout_gravity μžμ‹ μ˜ μœ„μΉ˜λ₯Ό λΆ€λͺ¨μ˜ μ–΄λŠ 뢀뢄에 μœ„μΉ˜μ‹œν‚¬μ§€ μ„€μ •
padding λ ˆμ΄μ•„μ›ƒ μ•ˆμ— λ°°μΉ˜ν•  μœ„μ ―μ˜ μ—¬λ°± μ„€μ •
layout_weight λ ˆμ΄μ•„μ›ƒμ΄ 전체 ν™”λ©΄μ—μ„œ μ°¨μ§€ν•˜λŠ” κ³΅κ°„μ˜ 가쀑값 μ„€μ •
baselineAligned λ ˆμ΄μ•„μ›ƒ μ•ˆμ— λ°°μΉ˜ν•  μœ„μ ― μ •λ ¬

 

ex) orientation, layout_weight μ£Όμš” 속성 μ‹€μŠ΅

 

 

 

- orientation 속성

: λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ—μ„œ κ°€μž₯ 기본적인 μ†μ„±μœΌλ‘œ, μ„€μ •κ°’μœΌλ‘œ verticalκ³Ό horizontal을 지정할 수 μžˆλ‹€.

vertical λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒ μ•ˆμ— 포함될 μœ„μ ―μ˜ 배치λ₯Ό μ™Όμͺ½ μœ„λΆ€ν„° 수직 λ°©ν–₯으둜 μŒ“μŒ
horizontal λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒ μ•ˆμ— 포함될 μœ„μ ―μ˜ 배치λ₯Ό μ™Όμͺ½ μœ„λΆ€ν„° μˆ˜ν‰ λ°©ν–₯으둜 μŒ“μŒ

 

ex) Line 8 μΆ”κ°€ν•˜μ—¬ orientation 속성 λΆ€μ—¬ν•˜κΈ°

 

 

 

- gravity 속성

: λ ˆμ΄μ•„μ›ƒ μ•ˆμ˜ μœ„μ ―μ˜ μœ„μΉ˜ 배치λ₯Ό κ²°μ •ν•˜λŠ” μ†μ„±μœΌλ‘œ, 기본값은 '쒌츑 상단'이닀.

 

+ λΆ€μ—¬ κ°€λŠ₯ν•œ μ†μ„±κ°’μ˜ μ’…λ₯˜λŠ” μ•„λž˜μ™€ κ°™μœΌλ©°, 속성값은 2개λ₯Ό μ‘°ν•©ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.

속성값 μ„€λͺ…
top μœ„μͺ½μ— 배치
bottom μ•„λž˜μͺ½μ— 배치
left μ™Όμͺ½μ— 배치
right μš°μΈ‘μ— 배치
center_vertical 수직 쀑앙에 배치
center_horizontal μˆ˜ν‰ 쀑앙에 배치
center μˆ˜ν‰κ³Ό 수직의 쀑앙에 배치

 

ex 1) right | bottom  -->  우츑 ν•˜λ‹¨μ— μ •λ ¬ν•˜λΌλŠ” 의미

Line 8 μ£Όλͺ©
λ²„νŠΌλ“€μ΄ 우츑 ν•˜λ‹¨μ— 배치된 것을 확인

 

 

ex 2) Line 8을 μΆ”κ°€ν•˜μ—¬ λ²„νŠΌ gravity 속성 λΆ€μ—¬ν•˜κΈ°

 

 

 

- layout_gravity 속성

: μžμ‹ μ˜ μœ„μΉ˜λ₯Ό λΆ€λͺ¨μ˜ μ–΄λŠ 뢀뢄에 λ‘˜μ§€λ₯Ό κ²°μ •ν•˜λŠ” μ†μ„±μœΌλ‘œ, λΆ€μ—¬ κ°€λŠ₯ν•œ μ†μ„±κ°’μœΌλ‘œλŠ” left, bottom, top, center, right 등이 μžˆλ‹€.

 

+ gravityλŠ” λ ˆμ΄μ•„μ›ƒμ—, layout_gravityλŠ” 주둜 μœ„μ ―μ— μ§€μ •ν•œλ‹€. 

 

ex) Line 12, 19, 26을 μΆ”κ°€ν•˜μ—¬ λ²„νŠΌλ“€μ˜ layout_gravity 속성 λΆ€μ—¬ν•˜κΈ°

 

 

 

- baselineAligned 속성

: 크기가 λ‹€λ₯Έ μœ„μ ―λ“€μ„ μ •λ ¬ν•˜λŠ” μ†μ„±μœΌλ‘œ, true와 false 값을 지정할 수 μžˆλ‹€.

 

ex) Line 8을 μˆ˜μ •ν•˜μ—¬ baselineAligned 속성값 λΆ€μ—¬ν•˜κΈ°

baselineAligned 속성값이 false 인 경우

 

baselineAligned 속성값이 true 인 경우

 

 

 

- layout_weight 속성

: 쀑볡 λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ—μ„œ μ‚¬μš©λ˜λŠ” μ†μ„±μœΌλ‘œ, λ ˆμ΄μ•„μ›ƒμ΄ 전체 ν™”λ©΄μ—μ„œ μ°¨μ§€ν•˜λŠ” κ³΅κ°„μ˜ 가쀑값을 μ„€μ •ν•œλ‹€.

 

+ λ¦¬λ‹ˆμ–΄ λ ˆμ΄μ•„μ›ƒμ„ μ—¬λŸ¬ 개 μ‚¬μš©ν•˜λŠ” 경우 각 λ ˆμ΄μ•„μ›ƒμ˜ 크기λ₯Ό 지정해야 ν•˜λŠ”λ°, μ΄λ•Œ λ ˆμ΄μ•„μ›ƒμ„ ν™”λ©΄ 전체에 μ±„μ›Œμ•Ό ν•˜κΈ° λ•Œλ¬Έμ— 주둜 전체 화면에 λŒ€ν•œ λΉ„μœ¨(%)둜 μ§€μ •ν•œλ‹€.

-->  이 λΉ„μœ¨μ— 따라 λΆ€λͺ¨ λ ˆμ΄μ•„μ›ƒμ˜ λ‚˜λ¨Έμ§€ μ˜μ—­μ„ μ°¨μ§€ν•˜λŠ” λΉ„μœ¨μ΄ 결정됨

 

ex) Line 15, 22, 28을 μΆ”κ°€ν•˜μ—¬ λ²„νŠΌλ“€μ— layout_width 속성 λΆ€μ—¬ν•˜κΈ°