La llamada TextView.setTextSize()
funciona de forma anormal. Inmediatamente después de la llamada a, setTextSize
si obtenemos un, getTextSize
devuelve un valor mucho más alto que el que establecimos anteriormente.
Esto es lo que estamos haciendo:
zoomControl.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View view) {
float size = mViewShabad.getTextSize() + 1;
textView.setTextSize(size);
}
});
¿Alguien ha visto esto antes?
Respuestas:
La diferencia aquí es que en el
setTextSize(int size)
método, el tipo de unidad por defecto es "sp" o "píxeles escalados". Este valor será una dimensión de píxel diferente para cada densidad de pantalla (ldpi, mdpi, hdpi).getTextSize()
, por otro lado, devuelve las dimensiones reales en píxeles del texto.Puede utilizar
setTextSize(int unit, float size)
para especificar un tipo de unidad. Los valores constantes para esto se pueden encontrar en la clase TypedValue, pero algunos de ellos son:fuente
este problema sucedió porque el
getTextSize()
método devuelve el tamaño en píxeles ¡depende de la densidad de la pantalla! para obtener el tamaño de texto real, use esto:espero que lo resuelva :)
fuente
setTextSize(int unit, float size)
。si la configuración cambia el tamaño de la fuente, algo causa un error de visualización, puede hacer lo siguiente:
fuente
DIP
?Cuando intentamos establecer un problema de programación con setText () con getTextSize (), devuelve el valor en px en lugar de sp / dp / dip y sabemos que 1sp / dp = 1.5px (tamaño de pantalla = 240).
funciona perfectamente para mí o podemos usar displaymatrix to px: sp / dp ratio y luego reemplazar ese valor con 1.5f
fuente
Después de mucho tiempo golpeó esto y finalmente resolvió así
crear una carpeta de dimensiones como esta res / valores / dimensiones.xml
fuente
En resumen, si desea reducir el tamaño de su texto
Debido a que getTextSize () devuelve UNIT_PX, entonces deberíamos usar UNIT_PX
fuente
Solución de Kotlin
Para configurar el uso de un recurso, simplemente use esto:
Para hacer lo mismo con un valor de recurso, agregue esta propiedad de extensión para establecer mucho más fácilmente el tamaño de su texto
fuente
Agregar un poco de sabor adicional a esta respuesta, ya que también generó un poco de confusión. Usted debe ser capaz de soltar esta prueba en ninguna
@RunWith(AndroidJUnit4.class)
prueba de que tiene en su proyecto (que también tendrá que añadir los Dimens a su dimens.xml).Nota: todas estas pruebas pasan
La gran conclusión que encontré es que
TextView.setTextSize(float)
aplica la escala de fuente , por lo que si pasa una dimensión que ya está etiquetada como SP en lugar de DP, recibirá la escala de fuente dos veces .fuente