Sobes.tech
Junior — Middle

Kviečiant requestLayout() metodą, ar būtina iš karto kviesti ir onDraw() metodą?

sobes.tech AI

Atsakymas iš AI

Kvietimas į requestLayout() metodą negarantuoja iš karto iškvietimo onDraw().

requestLayout() inicijuoja View pozicijos ir dydžio perskaičiavimą, kas lemia onMeasure() ir onLayout() iškvietimus. Sėkmingai užbaigus šiuos etapus, sistema nusprendžia, ar reikia perpiešti View, ir jei taip, iškviečia onDraw().

Todėl onDraw() nėra būtina iškviesti iš karto po requestLayout(), o tik jei pakeitimai reikalauja perpiešimo.

Jei norite priversti perpiešimą be dydžio ar pozicijos keitimo, naudokite invalidate(), kuris tiesiogiai sukelia onDraw() iškvietimą.