λ μ΄μμ
λ°°μΉλ₯Ό λ΄λΉνλ λ μ΄μμ
- λ μ΄μμ μμ μ‘΄μ¬νλ μμ ―μ λ°°μΉνκ² ν΄μ€
- νλ‘μ νΈλ₯Ό μ²μ μμ±νλ©΄ νλ©΄μ ꡬμ±ν μ μλ activity_mainμ΄λΌλ μ΄λ¦μ λ μ΄μμ νμΌμ΄ μλμΌλ‘ λ§λ€μ΄μ§
- λ μ΄μμ νμΌμ μμ€ μ½λκ° μλ 리μμ€λ‘ λΆλ₯λ¨
- νμΌλͺ μ λͺ¨λ μλ¬Έμλ‘ μμ±λ¨
- νμΌ μ΄λ¦ λμ νμΌμ νμ μΈ XMLμ λΆμ¬μ activity_main.xmlμ΄ λ¨
μμ£Ό μ¬μ©λλ λ μ΄μμ
1) 리λμ΄ λ μ΄μμ(μ ν, LinearLayout)
2) λ λ¬ν°λΈ λ μ΄μμ(μλ, RelativeLayout)
3) ν μ΄λΈ λ μ΄μμ(TableLayout)
4) 그리λ λ μ΄μμ(GridLayout)
5) νλ μ λ μ΄μμ(FrameLayout)
6) 컨μ€νΈλ μΈνΈ λ μ΄μμ(μ μ½, ConstraintLayout)
리λμ΄ λ μ΄μμ(LinearLayout)
- μμ ―μ κ°λ‘ λλ μΈλ‘ ν μ€λ‘ λ°°μΉνκΈ° μν λ μ΄μμ
- λ μ΄μμ μμ± orientationμ κ°λ‘(horizontal), μΈλ‘(vertical)λ§ λ³κ²½ν΄μ£Όλ©΄ κΈ°μ‘΄μ λ°°μΉλμ΄ μλ μμ ―λ€λ λ°©ν₯μ λ°κΏ μ μμ
μ¬μ© λ°©λ²
1. UI νΈμ§κΈ° μ°μΈ‘ μλ¨μ μλ [Code] λ²νΌμ ν΄λ¦ν΄μ λͺ¨λλ₯Ό λ³κ²½
2. νλ©΄μ΄ XML μ½λλ₯Ό μ§μ νΈμ§ν μ μλ λͺ¨μμΌλ‘ λ³κ²½
3. XML μ½λμμ 2νμ μλ ‘androidx.constraintlayout.widget.ConstraintLayout’μ ‘LinearLayout’μΌλ‘ μμ
4. λ€μ μ°μΈ‘ μλ¨μ μλ [Design] λ²νΌμ ν΄λ¦ν΄μ λͺ¨λλ₯Ό λ³κ²½νλ©΄ μ»΄ν¬λνΈ νΈλ¦¬μ μ΅μμ λ μ΄μμμ΄ λ¦¬λμ΄ λ μ΄μμμΌλ‘ λ³κ²½λ κ²μ νμΈ
ν νλ©΄μμ μμ ―μ μνκ³Ό μμ§μΌλ‘ λ€μνκ² λ°°μΉν΄μΌ νλ κ²½μ°
- 리λμ΄λ μ΄μμ μμ 리λμ΄λ μ΄μμμ μμ±νλ λ°©μμ μ¬μ©
- λ°κΉ₯μ ν° λ¦¬λμ΄λ μ΄μμμ 3κ°μ μμ 리λμ΄λ μ΄μμμΌλ‘ λΆλ₯ν ν κ° λ¦¬λμ΄λ μ΄μμ μμ νμν μμ ―μ λ°°μΉνλ λ°©μμ μ£Όλ‘ μ¬μ©
μ£Όμ μμ±
- orientation
: λ μ΄μμ μμ λ°°μΉν μμ ―μ μμ§ λλ μν λ°©ν₯μ μ€μ
- gravity
: λ μ΄μμ μμ λ°°μΉν μμ ―μ μ λ ¬ λ°©ν₯μ μ’μΈ‘, μ°μΈ‘, μ€μ λ±μΌλ‘ μ€μ
- padding
: λ μ΄μμ μμ λ°°μΉν μμ ―μ μ¬λ°±μ μ€μ
- layout_weight
: λ μ΄μμμ΄ μ 체 νλ©΄μμ μ°¨μ§νλ 곡κ°μ κ°μ€κ°μ μ€μ νλλ°, μ¬λ¬ κ°μ λ μ΄μμμ΄ μ€λ³΅λ λ μ£Όλ‘ μ¬μ©
- baselineAligned
: λ μ΄μμ μμ λ°°μΉν μμ ―μ 보기 μ’κ² μ λ ¬ν¨
β» λ μ΄μμλ View ν΄λμ€μ νμ ν΄λμ€μ΄λ―λ‘ View ν΄λμ€μ XMLμμ±κ³Ό λ©μλλ₯Ό λͺ¨λ μ¬μ©ν μ μμ
orientation μμ±
- 리λμ΄λ μ΄μμμ κ°μ₯ κΈ°λ³Έμ μΈ μμ±
- κ°μΌλ‘ verticalκ³Ό horizontalμ μ§μ ν μ μμ
- vertical
: 리λμ΄λ μ΄μμ μμ ν¬ν¨λ μμ ―μ λ°°μΉλ₯Ό μΌμͺ½ μλΆν° μμ§ λ°©ν₯μΌλ‘ μμ
- horizontal
: 리λμ΄λ μ΄μμ μμ ν¬ν¨λ μμ ―μ λ°°μΉλ₯Ό μΌμͺ½ μλΆν° μν λ°©ν₯μΌλ‘ μμ
: μ λ ₯νμ§ μμΌλ©΄ κ°λ‘(horizontal)κ° μ μ©λΌμ κ°λ‘λ‘ λ°°μΉ
gravity μμ±
- λ μ΄μμ μμ μμ ―μ μ΄λμ λ°°μΉν κ²μΈμ§λ₯Ό κ²°μ
- κΈ°λ³Έκ°μ μ’μΈ‘ μλ¨μ λ°°μΉλ¨
- κ°μΌλ‘ left, right, center, top, bottom λ±μ μ¬μ©
- 2κ°λ₯Ό μ‘°ν©νμ¬ μ¬μ©ν μλ μμ
- right | bottom : μ€λ₯Έμͺ½ μλμ μ λ ¬ν¨
μμ±κ° | μ€λͺ |
top | μμͺ½μ λ°°μΉ |
bottom | μλμͺ½μ λ°°μΉ |
left | μΌμͺ½μ λ°°μΉ |
right | μ€λ₯Έμͺ½μ λ°°μΉ |
center_vertical | μμ§ μ€μμ λ°°μΉ |
center_horizontal | μν μ€μμ λ°°μΉ |
center | μνκ³Ό μμ§μ μ€μμ λ°°μΉ |
layout_gravity μμ±
- μμ μ μμΉλ₯Ό λΆλͺ¨(μ£Όλ‘ λ μ΄μμ)μ μ΄λμ μμΉμν¬μ§ κ²°μ ν¨
- κ°μΌλ‘ left, right, center, top, bottom λ±μ μ¬μ©
- μμ±κ°μ νΉμ§μ gravity μμ±κ³Ό λμΌνμ§λ§ μ μ©λλ λμμ΄ λ€λ¦
- gravityλ λ μ΄μμμ, layout_ gravityλ μμ ―μ μ£Όλ‘ μ§μ ν¨
λ§μ§κ³Ό ν¨λ© μμ±
λ§μ§(margin)
- μΈλΆ μ¬λ°±, μ¦ λ·°μ λΆλͺ¨ λ·° μ¬μ΄μ 곡κ°
- 4λ©΄ λͺ¨λ λμΌν μ¬λ°±μ΄ μ§μ λ¨
- layout_marginLeft, layout_marginRight, layout_marginTop, layout_marginBottom μΌλ‘ 4λ©΄μ κ°λ³ μ¬λ°± μ§μ κ°λ₯
ν¨λ©(padding)
- λ΄λΆ μ¬λ°±, μ¦ λ·°μ λ·°μ λ΄μ©λ¬Ό μ¬μ΄μ 곡κ°
- 4λ©΄ λͺ¨λ λμΌν μ¬λ°±μ΄ μ§μ λ¨
- paddingLeft, paddingTop, paddingRight, paddingBottom μΌλ‘ 4λ©΄μ κ°λ³ μ¬λ°± μ§μ κ°λ₯
λ§μ§ κ΄λ ¨ μμ±
XML μμ± | μ€λͺ |
layout_margin | μνμ’μ° λ€ λ°©ν₯ λ§μ§μ μ§μ νλ€ |
layout_marginTop | μμͺ½ λ§μ§μ μ§μ νλ€. |
layout_marginBottom | μλμͺ½ λ§μ§μ μ§μ νλ€. |
layout_marginLeft | μΌμͺ½ λ§μ§μ μ§μ νλ€. |
layout_marginRight | μ€λ₯Έμͺ½ λ§μ§μ μ§μ νλ€. |
ν¨λ©κ΄λ ¨ μμ±
XML μμ± | μ€λͺ |
padding | μνμ’μ° λ€ λ°©ν₯ ν¨λ©μ μ§μ νλ€ |
paddingTop | μμͺ½ ν¨λ©μ μ§μ νλ€. |
paddingBottom | μλμͺ½ ν¨λ©μ μ§μ νλ€. |
paddingLeft | μΌμͺ½ ν¨λ©μ μ§μ νλ€. |
paddingRight | μ€λ₯Έμͺ½ ν¨λ©μ μ§μ νλ€. |
baselineAligned μμ±
- ν¬κΈ°κ° λ€λ₯Έ μμ ―λ€μ 보기 μ’κ² μ λ ¬ν¨
- trueμ false κ°μ μ§μ ν μ μμ
(a) : 리λμ΄λ μ΄μμμ baselineAlignedλ₯Ό falseλ‘ μ§μ
(b) : μλ΅νκ±°λ trueλ‘ μ§μ
layout_weight μμ±
- μ€λ³΅ 리λμ΄ λ μ΄μμμμ μ¬μ©λ¨
- 리λμ΄λ μ΄μμμ μ¬λ¬ κ° μ¬μ©ν κ²½μ° κ° λ μ΄μμμ ν¬κΈ°λ₯Ό μ§μ ν΄μΌ ν¨
- λ μ΄μμμ νλ©΄ μ 체μ μ±μμΌ νκΈ° λλ¬Έμ μ£Όλ‘ μ 체 νλ©΄μ λν λΉμ¨(%)λ‘ μ§μ ν¨
→ λΉμ¨μ λ°λΌ λΆλͺ¨ λ μ΄μμμ λ¨μ μμμ μ°¨μ§νλ λΉμ¨μ΄ κ²°μ λ¨
β» λΉμ¨μ΄ 1:1μ΄λΌλ λκ°μ§ μμ μ μμ
β» layout_weight μμ±μ΄ μλ μμ ―λ§ λ¨μ 곡κ°μ μ°¨μ§ν¨
λ λ¬ν°λΈ λ μ΄μμ(RelativeLayout)
- μμ ―κ³Ό λΆλͺ¨μμ μμΉ κ΄κ³ λλ μμ ―λΌλ¦¬μ κ΄κ³λ₯Ό μ§μ ν¨μΌλ‘μ¨ λ·°λ₯Ό λ°°μΉ
λΆλͺ¨ λ·°λ₯Ό κΈ°μ€μΌλ‘ μμΉ μ§μ
- μμ λ·°μ κΈ°λ³Έ μμΉ
- λΆλͺ¨ λ·°μ μ’μΈ‘ μλ¨μ΄μ§λ§ λ€μν layout_~ μμ±μ μ΄μ©ν΄ μμ λ‘κ² μμΉ μ§μ
λ€λ₯Έ μμ ―μ μλ μμΉμ λ°°μΉ
- λ λ¬ν°λΈλ μ΄μμ μμμ λ€λ₯Έ μμ ―μ νΉμ ν κ³³μ λ°°μΉνλ λ°©λ²λ μμ
- κ° μμ±μ κ°μλ λ€λ₯Έ μμ ―μ μμ΄λλ₯Ό μ§μ νλ©΄ λλλ° “@+id/μλ³μ”μ κ°μ νμμΌλ‘ μ¬μ©ν¨
- λ€λ₯Έ μμ ―κ³Ό κ΄λ ¨λ μμ±μ λ€μ κ·Έλ¦Όκ³Ό κ°μ
ν μ΄λΈ λ μ΄μμ(TableLayout)
- μμ ―μ νννλ‘ λ°°μΉν λ μ£Όλ‘ μ¬μ©
- <TableRow>μ ν¨κ» μ¬μ©
- νμ μ : μ μ
- μ΄μ μ : μμ ν¬ν¨λ μμ ―μ μ
ν μ΄λΈ λ μ΄μμμ μμ±
layout_span
- ν μ΄λΈλ μ΄μμ μμ ν¬ν¨λ μμ ―μ μ€μ νλ μμ±
- μ΄μ ν©μ³μ νμνλΌλ μλ―Έ
- μλ₯Ό λ€μ΄ layout_span=“2”λ νμ¬ μ λΆν° 2κ°μ μ μ ν©μ³μ νμν¨
layout_column
- ν μ΄λΈλ μ΄μμ μμ ν¬ν¨λ μμ ―μ μ€μ νλ μμ±
- μ§μ λ μ΄μ νμ¬ μμ ―μ νμ
stretchColumns
- <TableLayout> μ체μ μ€μ νλ μμ±
- μ§μ λ μ΄μ λλΉλ₯Ό λ리λΌλ μλ―Έ
- stretch Columns=“*”λ κ° μ μ λͺ¨λ κ°μ ν¬κΈ°λ‘ νμ₯νμ¬ μ 체 νλ©΄μ΄ κ½ μ°¨λ ν¨κ³Όλ₯Ό λ
- μ΄ λ²νΈλ 0λ²λΆν° μμ