texto tamaño studio personalizar modificar letra formato escribir ejemplo editar como cambiar android textview pixels pixelformat

studio - Android TextView setTextSize aumenta incorrectamente el tamaño del texto



tamaño de letra en android studio (3)

Esto está en una extensión de TextView. getTextSize() y setTextSize() no se anulan, no extiendo esos métodos. Programación en 1.6, API nivel 4.

El ciclo en este código hace que el tamaño se multiplique por 1.5 cada vez que itera, por ejemplo, si el tamaño inicialmente lee 200 de getTextSize , entonces se setTextSize(size) , getTextSize llamado de nuevo getTextSize 300.

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

¿Por qué es esto?


Je, problema de unidades mixtas. Parece un poco contradictorio, pero es una solución fácil. El método predeterminado setTextSize(float) asume que está ingresando unidades sp (píxeles escalados), mientras que el método getTextSize() devuelve un tamaño de píxel exacto.

Puede solucionar esto utilizando el setTextSize(TypedValue, float) alternativo, como setTextSize(TypedValue, float) :

this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);

Esto asegurará que estés trabajando con las mismas unidades.


pasar unidades con tamaño utilizando TypedValue como a continuación:

TypedValue.COMPLEX_UNIT_PX // Pixels

TypedValue.COMPLEX_UNIT_SP // Píxeles escalados

TypedValue.COMPLEX_UNIT_DIP // Píxeles independientes del dispositivo

setTextSize (TypedValue.COMPLEX_UNIT_SP, 18)


setTextSize() y getTextSize() funcionan con diferentes unidades. El parámetro para establecer () es "píxeles escalados" independientes de la densidad, mientras que get () devuelve píxeles antiguos simples.