¿Existe algún método que devuelva el ancho (en píxeles) de un texto a dibujar en un lienzo de Android utilizando el método drawText () de acuerdo con la pintura utilizada para dibujarlo?
android
text
android-canvas
draw
NioX5199
fuente
fuente
fuente
Respuesta suplementaria
Hay una ligera diferencia entre el ancho devuelto por
Paint.measureText
yPaint.getTextBounds
.measureText
devuelve un ancho que incluye el valor advanceX del glifo rellenando el principio y el final de la cadena. ElRect
ancho devuelto porgetTextBounds
no tiene este relleno porque los límites son losRect
que ajustan firmemente el texto.fuente
fuente
En realidad, hay tres formas diferentes de medir el texto.
GetTextBounds:
MeasureTextWidth:
Y getTextWidths:
Tenga en cuenta que getTextWidths podría ser útil si está tratando de determinar cuándo ajustar el texto a la siguiente línea.
MeasureTextWidth y getTextWidth son iguales y tienen el ancho avanzado que miden sobre el que otros han publicado. Algunos consideran que este espacio es excesivo. Sin embargo, esto es muy subjetivo y depende de la fuente.
Por ejemplo, el ancho de los límites del texto de medida puede parecer demasiado pequeño:
Sin embargo, al agregar un texto adicional, los límites de una letra parecen normales:
Imágenes tomadas de la Guía de desarrolladores de Android para el dibujo de lienzo personalizado
fuente
Bueno, lo he hecho de otra manera:
Espero que esto te ayudará.
fuente
Usé los métodos measureText () y getTextPath () + computeBounds () y construí un Excel con todos los atributos de texto para la fuente de tamaño fijo que se puede encontrar en https://github.com/ArminJo/android-blue-display/blob /master/TextWidth.xlsx . Allí encontrará también fórmulas simples para otros atributos de texto como ascender, etc.
La aplicación , así como la función drawFontTest () para generar los valores sin procesar utilizados en Excel también están disponibles en este repositorio.
fuente
puedes usar "textPaint.getTextSize ()" para obtener el ancho del texto
fuente