studio strings programacion móviles español desarrollo curso array aplicaciones android string bounding-box

programacion - strings.xml android studio



¿Cómo obtener el ancho de cadena en Android? (4)

Me gustaría obtener altura también si es posible.


Hay dos medidas de ancho diferentes para un texto. Uno es el número de píxeles que se ha dibujado en el ancho, el otro es el número de ''píxeles'' que el cursor debe avanzar después de dibujar el texto.

paint.measureText y paint.getTextWidths devuelve el número de píxeles (en float) que el cursor debe avanzar después de dibujar la cadena dada. Para la cantidad de píxeles pintados, use paint.getTextBounds como se menciona en otra respuesta. Creo que esto se llama ''Avance'' de la fuente.

Para algunas fuentes estas dos mediciones difieren (mucho), por ejemplo, la fuente Black Chancery tiene letras que se extienden más allá de las otras letras (superposición) - vea la letra mayúscula ''L''. Use paint.getTextBounds como se menciona en otra respuesta para obtener píxeles pintados.


He medido el ancho de esta manera:

String str ="Hiren Patel"; Paint paint = new Paint(); paint.setTextSize(20); Typeface typeface = Typeface.createFromAsset(getAssets(), "Helvetica.ttf"); paint.setTypeface(typeface); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.FILL); Rect result = new Rect(); paint.getTextBounds(str, 0, str.length(), result); Log.i("Text dimensions", "Width: "+result.width());

Esto te ayudaría.



Puede utilizar el getTextBounds(String text, int start, int end, Rect bounds) de un objeto Paint. Puede usar el objeto de pintura proporcionado por un TextView o construir uno usted mismo con la apariencia de texto deseada.

Con una vista de texto, puede hacer lo siguiente:

Rect bounds = new Rect(); Paint textPaint = textView.getPaint(); textPaint.getTextBounds(text, 0, text.length(), bounds); int height = bounds.height(); int width = bounds.width();