Sobes.tech
Junior — Middle

A requestLayout() metódus hívásakor kötelező meghívni az onDraw() metódust?

sobes.tech MI

Válasz az MI-től

A requestLayout() metódus hívása nem garantálja az onDraw() azonnali meghívását.

A requestLayout() újraszámolja a View helyét és méretét, ami az onMeasure() és onLayout() hívásait eredményezi. Ezek sikeres végrehajtása után a rendszer eldönti, szükség van-e a View újrarajzolására, és ha igen, meghívja az onDraw() metódust.

Így az onDraw() nem feltétlenül hívódik meg közvetlenül a requestLayout() után, csak akkor, ha a változások újrarajzolást igényelnek.

Ha kényszeríteni szeretné az újrarajzolást anélkül, hogy a méretet vagy a pozíciót módosítaná, használja az invalidate() metódust, amely közvetlenül az onDraw() meghívásához vezet.