Pergunta

Estou tentando trocar duas linhas lineares, definindo suas propriedades de visibilidade para "visível" e "Gone", respectivamente. Também estou usando uma animação enquanto os layouts estão sendo trocados. A animação é concluída com êxito e vejo o layout correto. No entanto, o layout anterior que tem sua propriedade de visibilidade definida como "Gone" ainda recebe cliques, mesmo que não seja visível. Ao mesmo tempo, o layout que é "visível" recebe cliques apenas quando clicado na área onde o layout "Gone" não é clicável. Também estou chamando o método RequestFocus no layout "visível". Mas isso não ajuda.

Além disso, se eu pular a parte da animação e apenas definir as propriedades de visibilidade, tudo funciona corretamente.

O que estou perdendo aqui?

Foi útil?

Solução

Se você estiver animando widgets, precisará fazer alterações no layout para obter os resultados "Stick". Apenas usando o fillAfter as coisas vão lhe dar alguns dos efeitos que você vê - está desenhando -os no novo local, mas eles não são realmente dentro o novo local.

Então, eu começaria desligando qualquer fill* Configurações (por exemplo, fillAfter) em sua animação. Veja como sua animação se comporta então. Provavelmente, agora ele representa o que os cliques dizem.

Em seguida, configure um AnimationListener Para obter o controle quando a animação termina e, nesse ponto, faça alterações reais nos widgets e seus contêineres para afetar suas posições finais.

Aqui está um projeto de amostra Isso demonstra o que quero dizer, embora de uma maneira excessivamente complicada, já que estou animando uma visão personalizada, em vez de um widget pronto para uso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top