Sobes.tech
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()