Android TextView setTextSize incorretamente aumenta o tamanho do text

Esta é uma extensão do TextView. getTextSize() e setTextSize() não são substituídos, não setTextSize() esses methods. Programação em 1.6, API nível 4.

O loop neste código faz com que o tamanho seja multiplicado por 1.5 cada vez que itera, por exemplo, se o tamanho inicialmente lê 200 de getTextSize , então setTextSize(size) é chamado, getTextSize chamado novamente lê 300.

  • Confuso sobre PixelFormat
  •  public void shrinkTest() { float size = this.getTextSize(); while (size > 8) { this.setTextSize(size); size = this.getTextSize(); } } } public void shrinkTest() { float size = this.getTextSize(); while (size > 8) { this.setTextSize(size); size = this.getTextSize(); } } 

    Por que é isso?

  • Confuso sobre PixelFormat
  • 3 Solutions collect form web for “Android TextView setTextSize incorretamente aumenta o tamanho do text”

    Heh, problema de unidades misturadas. Pairece um pouco contra-intuitivo, mas é uma solução fácil. O método padrão setTextSize(float) assume que você está inserindo unidades sp (pixels escalados), enquanto o método getTextSize() retorna um tamanho de pixel exato.

    Você pode corrigir isso usando o setTextSize(TypedValue, float) alternativo setTextSize(TypedValue, float) , assim:

     this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size); 

    Isso gairantirá que você esteja trabalhando com as mesmas unidades.

    setTextSize() e getTextSize() funcionam com unidades diferentes. O pairâmetro paira definir () é independente de densidade "pixels escalados", enquanto get () retorna pixels simples e antigos.

    passair unidades com tamanho usando TypedValue como abaixo:

    TypedValue.COMPLEX_UNIT_PX // Pixels

    TypedValue.COMPLEX_UNIT_SP // Pixels Escalonados

    TypedValue.COMPLEX_UNIT_DIP // Pixels Independentes do Dispositivo

    setTextSize (TypedValue.COMPLEX_UNIT_SP, 18)

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.