Middle
Պատմեք ինձ այն մեթոդների մասին, որոնք վերականգնում են View-ը։
sobes.tech AI
Պատասխան AI-ից
Մեթոդներ.
invalidate(): Նշում է View-ը որպես "աղտոտ", պահանջելով նորից նկարել: Պլանավորում էonDraw()-ի կատարմանը ապագայում: Նոր նկարումը կատարվում է հիմնական հոսքում: Օգտագործվում է, եթե View-ի արտաքին հատկությունները (գույն, ֆոն և այլն) փոխվել են:postInvalidate(): Դומהinvalidate(), բայց կարող է կոչվել ցանկացած հոսքից, ոչ միայն հիմնականից: Անվտանգ է ֆոնային հոսքերում օգտագործելու համար:requestLayout(): Նշում է View-ը որպես "վավեր չէ", պահանջելով նրա չափերի և դիրքի վերանախագծում: Պլանավորում էonMeasure()ևonLayout()-ի կատարմանը, ապաonDraw(): Օգտագործվում է, եթե View-ի չափերը կամ դիրքը փոխվել են:
Համեմատություն մեթոդների:
| Մեթոդ | Կոչող հոսք | layout-ի վերանախագծում | Նոր նկարում |
|---|---|---|---|
invalidate() |
UI հոսք | Ոչ | Այո |
postInvalidate() |
Ամեն հոսք | Ոչ | Այո |
requestLayout() |
UI հոսք | Այո | Այո (layout-ից հետո) |
Օրինակ invalidate()-ի օգտագործման:
// Փոխել View-ի գույնը և պահանջել նորից նկարել
myView.setBackgroundColor(Color.RED)
myView.invalidate()
Օրինակ requestLayout()-ի օգտագործման:
// Ավելացնել երեխա LinearLayout-ին և պահանջել layout-ի վերանախագծում և նոր նկարում
val newTextView = TextView(context)
linearLayout.addView(newTextView)
linearLayout.requestLayout()