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.

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

¿Por qué es esto?

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)

  • Actualizar una vista de texto aunque el usuario no esté utilizando mi aplicación
  • Actualización de Android TextView en subprocesos y ejecución
  • Android - Cómo manejar cuando se hace clic en el enlace TextView a través de Linkify
  • Estilo conjunto de Android en el código
  • Android Fuente personalizada Spannable Tipo de letra
  • Fondo personalizado de la ventana emergente del error
  • Animación del tamaño de texto de TextView de Android y no de TextView
  • Cómo establecer el ancho de la ventana de texto wrap_content pero limitar a 1/3 del ancho de los padres
  • ¿Hay de todos modos hacer automáticamente un TextView ir a una nueva línea después de una cierta cantidad de caracteres?
  • Comportamiento impar: Tipo de clase del objeto devuelto por el método getText () de cambios TextView después de crear AccessibilityNodeInfo de TextView
  • Android hace que los números de teléfono puedan hacer clic, autodetect
  • Interesting Posts
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.