Depois de alterar uma propriedade em um objeto LayoutParams, preciso chamar setLayoutParams novamente?
Eu tenho uma Visualização (contendo um anúncio) que preciso ser dimensionada para se ajustar à largura da tela em um determinado momento (após o carregamento do anúncio). Então eu tenho um métodosetHeight(myView)
que calcula a altura correta para a largura da tela especificada e altera os LayoutParams da exibição de acordo. A parte crucial do código é esta:
LayoutParams params = myView.getLayoutParams();
int width = myView.getWidth();
if (params != null && width > 0) {
params.height = (int) Math.round(ratio * width);
}
Isso parece funcionar na maior parte do tempo, mas às vezes a exibição não é dimensionada. Parece funcionar consistentemente apenas se eu adicionar a seguinte linha na parte inferior:
myView.setLayoutParams(params);
Isso parece fazer sentido também, já que o Android Views chamarequestLayout()
na suasetLayoutParams()
método. Por outro lado, não vejo como uma mudança em um campo público (params.height
) acionaria uma alteração no layout.
Por outro lado, encontro repetidamente tutoriais na rede em que os parâmetros são simplesmente alterados e depois não os definimos novamente.
Portanto, minha pergunta é: É correto que, para atualizar imediatamente o layout após alterar uma propriedade do LayoutParams, eu precise chamarsetLayoutParams
novamente? E que simplesmente alterar a propriedade só levará a uma alteração de layout em algum momento posterior, quando a alteração de layout for acionada de outro lugar?