Middle
მითხარით მეთოდებზე, რომლებიც View-ს ხელახლა ხატავენ.
sobes.tech AI
პასუხი AI-სგან
Үйлөр:
invalidate(): View-ны "чирик" деп белгилейт, кайра сүрөт тартууну талап кылат.onDraw()-дун ишке ашырылышын келечекте пландаштырат. Кайра сүрөт тартуу негизги агымда болот. Viewдин тышкы касиеттери (түсү, фон жана башка) өзгөргөндө колдонулат.postInvalidate():invalidate()менен окшош, бирок ар кандай агымдан чакырылышы мүмкүн, негизги эмес. Арткы агымдарда колдонууга коопсуз.requestLayout(): View-ны "жараксыз" деп белгилейт, анын өлчөмү жана жайгашуусу кайра эсептелиши керек.onMeasure()жанаonLayout()аткарууну пландаштырат, андан кийинonDraw(). Viewдин өлчөмдөрү же жайгашуусу өзгөргөндө колдонулат (мисалы,ViewGroupичинде балдар элементтерин кошуу/алып салуу).
Методдорду салыштыруу:
| Метод | Чакырган агым | 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()