Sobes.tech
Junior — Middle

Qual é a diferença entre usar requestLayout e invalidate durante a atualização da interface?

sobes.tech IA

Resposta da IA

O método requestLayout() é utilizado para informar ao sistema que o tamanho ou a posição da View mudou e que é necessário recalcular o layout. Ao chamar este método, ocorre uma nova passagem de medição e disposição dos elementos (measure/layout).

O método invalidate() sinaliza que o conteúdo da View mudou e precisa ser redesenhado (chamar o método onDraw). No entanto, o layout não é recalculado, apenas a exibição visual é atualizada.

Resumindo:

  • requestLayout() — recalcula o tamanho e a disposição da View.
  • invalidate() — redesenha a View sem alterar o tamanho.

Exemplo:

view.requestLayout(); // se os parâmetros de tamanho mudaram
view.invalidate();    // se apenas o conteúdo para desenhar mudou