Chamar TextView.Settext () faz com que a interface do usuário seja idiota
Pergunta
Estou codificando um player de áudio, onde um thread atualiza o TextView representando o tempo decorrido da faixa, a cada 250 milissegundos.
A tela se parece com o seguinte:
1: 30/2: 30 <----- Barra de progresso ----->
O TextView 1 é 1: 30/ e TextView 2 é 2:30.
Ambos estão definidos para Wrap_Content para largura.
O que acontece é que, em cada ciclo de 250 milissegundos, o thread verifica a hora atual e atualiza o TextView 1. Para este breve momento, o TextView 2 e a barra de progresso são empurrados momentaneamente para a direita em cerca de 2-4 pixels. Então eles voltam a colocar até que a mesma coisa aconteça durante o próximo ciclo.
Eu não sei o que está acontecendo. Não há personagens espaciais à direita, etc. e tudo deveriam, teoricamente, estar funcionando sem problemas, mas não é.
Alguém pode me ajudar? Espero que outra pessoa possa ter enfrentado um problema semelhante ....
PS: Inicializo o TextView 1 a 0: 00/ e TextView 2 a 0:00 no arquivo XML do layout e o código o lida a partir daí.
Solução
Considerado usando uma largura fixa (16-20dip?) Em vez de wrap_content para esses campos? A fonte arborizada variável vai mover a barra de progresso, já que 1:11 é mais estreita que, digamos, 1:59.
Ou vá para uma fonte de arremesso fixo, se os horários sempre serão o mesmo número de caracteres.