https://www.youtube.com/watch?v=HbAeTGoKG6k
λ¬΄λ € 13λ μ μ μμ. κ·Έλ¬λ μ§κΈλ μ€μν κΈ°λ³Έ μ§μμΌλ‘ μμλ νμκ° μλ€κ³ μκ°νλ€.
μμ½
μ§νν λ°λͺ¨ (μ΄λ κ² νλ©΄ μλ©λλ€. λμ μμ)
1. LinearLayout μ μμν Custom Layoutμ΄ layout κ³Όμ μ μ§ννλ μ€μ, κ·Έλ¬λκΉ onLayout()μ νΈμΆν΄ μ€ννλ μ€μ
2. μλ λ·°λ₯Ό add νκ±°λ(addView()) remove νλ©΄(removeView())
3. κ²°λ‘ : μ΄μκ° μκΈ΄λ€. > μΌμ’ μ μ¬κ·λ¬Έμ κ° μκΈ΄λ€.
layout μ€ : μΌλΆ νμ μ§ν©(μλ λ·°λ€)μ΄λ μ 체 λ·° κ³μΈ΅ ꡬ쑰λ₯Ό μ¬λ°°μΉνλ μ€μΈλ°
μ΄ νμ΄λ°μ addView(), removeView() νΈμΆ : λ μ΄μμ μ 체μ μν₯μ μ£Όλ ν¨μλ₯Ό νΈμΆν΄λ²λ¦¬λ >> λ layoutμ μ€ννκ² λλ κ²μ
> μΌμ νλ μ€μ μμ±μ λ³κ²½μμΌ λ²λ €μ λΆμμ©μ΄ μκΈ°λ κ².
κ·ΈλΌ μ¬κΈ°μ λ§νλ layout μ 무μμ νλ κ³Όμ μΈκ°
μ΄κ±΄ μλλ‘μ΄λ λ벨λ‘νΌμ€ 곡μλ¬Έμ λ΄μ©.
κ³Όκ±°μ μμ μ΄ View μͺ½ μ€λͺ μ μμ νκ³ λ²μν μ μ΄ μλ€.
λμ λ°λ²μ View 곡μ λ¬Έμ λ΄μ©μ μ¬κΈ°μ 보면 λλ€.
μμμμ λ§νλ layout μμ μ, λΆλͺ¨ λ·°κ° μλ λ·°μ ν¬κΈ° μ 보λ₯Ό κ°μ§κ³ μλ λ·°λ€μ λ°°μΉνλ κ³Όμ μ΄κ² λ€. λΆλͺ¨ λ·°κ° μλ λ·°λ₯Ό λ°°μΉνλ κ³Όμ μ΄ μ§ν μ€μΈλ° μλ λ·°κ° μλ‘ μΆκ° λκ±°λ κΈ°μ‘΄ μλ λ·°κ° μ¬λΌμ Έμ
> λΆλͺ¨ λ·°λ κ³Όκ±°μ μ 보λ₯Ό κ°μ§κ³ μμ μ νλ μ΄μκ° λ°μν μ μκ² κ³
> μλ λ·°κ°μ μΆκ° λλ μ κ±°λ‘ μΈν΄ λΆλͺ¨ λ·°κ° layout κ³Όμ μ μ§ννλ €κ³ ν ν λ°, μ΄κ² layout μ€μ μΌμ΄λκ² μΌλ. μ μΌμ’ μ μ¬κ·λ¬Έμ κ° μκΈ΄λ€λμ§ κ°μ΄ μ¨λ€.
λμ μμ κ³ μΉκΈ°
1. λ€λ₯Έ μμ μμ΄ κ·Έλ₯ λ°λ‘ μλ λ·°λ₯Ό add νκ±°λ remove νκΈ°
> κ°λ°μκ° λ μ΄μμ μ§ννλΌκ³ μν¬ νμκ° μλ€.
μμ λ·λΆλΆμμ μ κ°λ°μλΆμ΄ μμ£Ό μ μ λΉλΆ νμ λ€.
μμμ 6:54 μͺ½ μ€ν¬λ¦½νΈ
But the most important thing to remember is, when you finish layout, all of the measurement and layout information for that container should be done. It should be complete. Which means, if you're adding children during the middle of layout, you need to make sure that your measurement information and that of your children is all correct by the time you return from layout.
Because that's what the rest of the view hierarchy expects.
λ°λ²μ
κΈ°μ΅ν΄μΌν κ°μ₯ μ€μν κ²μ, λ μ΄μμμ΄ λλ¬μ λ, κ·Έ 컨ν μ΄λμ λν λͺ¨λ μΈ‘μ κ³Ό λ μ΄μμ μ 보λ λλμμ΄μΌ ν©λλ€. μλ£λμ΄μΌ ν©λλ€. μ¦, λ§μ½ λ μ΄μμ λμ€μ μλ λ·°λ€μ μΆκ°νλ€λ©΄, λΉμ μ μΈ‘μ μ 보μ μμ λ·°λ€μ μΈ‘μ μ λ³΄κ° λ μ΄μμμΌλ‘λΆν° λ°νλ°μ μμ κΉμ§ λͺ¨λ κ²μ΄ μ ννλ€λ κ²μ νμ€ν ν΄μΌν©λλ€. μλνλ©΄ λ·° κ³μΈ΅μ λλ¨Έμ§ λΆλΆλ€μ΄ κΈ°λνλ λ°κ° κ·Έλ κ±°λ μ.
μμμ 7:23 μ€ν¬λ¦½νΈ
And make sure that when your layout for your container finishes, everything below it is handled correctly so that the view hierarchy is in a consistent state with your container.
λ°λ²μ
컨ν μ΄λμ λ μ΄μμμ΄ λλ¬μ λ, 컨ν μ΄λ μλμ λͺ¨λ κ²λ€μ΄ μ¬λ°λ₯΄κ² μ²λ¦¬λμ΄ λ·° κ³μΈ΅μ΄ 컨ν μ΄λμ μνμ μΌμΉνμ§ νμ€ν νμΈνμΈμ.
λ΅πβοΈ
'λΉ κ΅¬λ© μ±μ°κΈ°' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Android][WebView] μ±κ³Ό WebVeiw κ° ν΅μ (0) | 2023.02.06 |
---|---|
[Android][Toast] Can't toast on a thread that has not called Looper.prepare() (1) | 2023.02.01 |
[Android] νλ©΄ μ ν μ λλ©μ΄μ (0) | 2023.01.12 |
[Android][Dialog] cancel / dismiss (0) | 2023.01.04 |
[Android][Android 13][API Level 33] λ°νμ μλ¦Ό κΆν, κ·Έλ¦¬κ³ κΈ°ν λ³κ²½ (1) | 2023.01.03 |