Android TextView setTextSize aumenta incorrectamente el tamaño del texto
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 bucle 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 lee 300.
- Cómo agregar texto a editext
- ¿Cómo escalar / cambiar el tamaño del texto para que se ajuste a un TextView?
- Android TextView: ¿hay una manera de forzar la animación de la marquesina con texto corto?
- Android sola línea TextView sin los puntos
- Sombra larga de Android TextView
public void shrinkTest() { float size = this.getTextSize(); while (size > 8) { this.setTextSize(size); size = this.getTextSize(); } }
¿Por qué es esto?
- Android: Alinea un texto a la izquierda y centra la vista de texto en la vista de los padres
- Android scrollview autoscrolling como texto se añade
- Establecer una cadena spannable no funciona en una simple Textview
- No inserte texto en Android TextView en el período en abreviatura
- Actualizar textview en la actividad de Fragment
- Android: ¿Cómo hago bloques no rompibles en TextView?
- Verticalmente Centro TextView en RelativeLayout
- ¿Cómo crear una animación cambiante de color? (Androide)
Heh, problema de las unidades mixtas. Parece un poco contraintuitivo, pero es una solución fácil. El método predeterminado setTextSize(float)
supone que usted está introduciendo unidades sp
(píxeles escalados), mientras que el método getTextSize()
devuelve un tamaño de píxel exacto.
Puedes solucionar esto usando el setTextSize(TypedValue, float)
alternativo setTextSize(TypedValue, float)
, así:
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
Esto se asegurará de que está trabajando con las mismas unidades.
setTextSize()
y getTextSize()
funcionan con diferentes unidades. El parámetro set () es independiente de la densidad "píxeles escalados", mientras que get () devuelve píxeles antiguos llanos.
Pasar unidades con tamaño usando TypedValue como a continuación:
TypedValue.COMPLEX_UNIT_PX // Píxeles
TypedValue.COMPLEX_UNIT_SP // Píxeles escalados
TypedValue.COMPLEX_UNIT_DIP // Píxeles independientes del dispositivo
SetTextSize (TypedValue.COMPLEX_UNIT_SP, 18)
- Manera universal de escribir en la tarjeta SD externa en Android
- La compilación de aplicaciones de Android no genera recursos de paquetes