Sobes.tech
Junior — Middle

Czym różni się użycie metod requestLayout i invalidate podczas aktualizacji interfejsu?

sobes.tech AI

Odpowiedź od AI

Metoda requestLayout() służy do poinformowania systemu, że rozmiar lub pozycja widoku uległy zmianie i konieczne jest ponowne obliczenie układu. Wywołanie tej metody powoduje ponowne przejście przez etap pomiaru i rozmieszczenia elementów (measure/layout).

Metoda invalidate() sygnalizuje, że zawartość widoku się zmieniła i musi zostać ponownie narysowana (wywołać metodę onDraw). Jednak układ nie jest ponownie obliczany, tylko odświeżany jest wizualny wygląd.

Podsumowując:

  • requestLayout() — ponowne obliczenie rozmiarów i położenia widoku.
  • invalidate() — ponowne narysowanie widoku bez zmiany rozmiarów.

Przykład:

view.requestLayout(); // jeśli zmieniły się parametry rozmiaru
view.invalidate();    // jeśli zmieniła się tylko zawartość do narysowania