Pergunta

Para que eu possa inflar uma viewstub em tempo de execução. Digamos que eu queira que ele desapareça e, em seguida, talvez inflar novamente, dependendo de algum evento que ocorra (por exemplo, uma barra de ferramentas que infla e esvazia de acordo com o que o usuário seleciona na tela).

Eu posso usar o View.SetVisibility (View.gone) .... Existe alguma outra maneira?

Ou estou fazendo algo errado aqui?

Obrigado! :)

Foi útil?

Solução

Os layouts infladores podem ser caros, especialmente em dispositivos mais antigos. Pense no Viewstub como um mecanismo de carregamento preguiçoso para as subárvores de exibição que podem ou nunca ser expandidas em vez de uma maneira de trocar seções de uma hierarquia de visualização em tempo de execução. Uma vez inflado, não há nada de errado em trocar entre visível/se foi. Longe fará a estrutura pular essa subárvore durante travessias caras.

Isso é verdade, desde que você não precise da memória usada pela visão inflada. Definir a visibilidade para Gone não libera nenhuma memória; Ele apenas marca a vista como desaparecida para fins de layout e desenho. Para liberar a memória da visão inflada do Viewstub, você teria para remover a visualização inflada e substituí -la novamente por um novo Viewstub para uso futuro.

Outras dicas

Sim, você pode remover quando quiser. Eu já o fiz agora.

ViewStub stub = findById(...);
View v = stub.inflate();

e defina visibilidade de visualização em qualquer evento.

v.setVisibility(View.GONE);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top