studio - Android TextView setTextSize aumenta incorrectamente el tamaño del texto
tamaño de letra en android studio (3)
Esta pregunta ya tiene una respuesta aquí:
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.