2011-06-15 30 views
11

Quiero calcular el ancho de la fuente de cadena en píxeles en android. Tengo una matriz de cadenas y añado todos estos elementos de la matriz para formar una cadena. así que tengo que establecer el espaciado fijo entre dos elementos consecutivos de la matriz. Estoy colocando esta cadena final en la vista de texto. Finalmente estoy agregando esta vista de texto a tablerow. En resumen, quiero ver la estructura de la tabla con título y valores. He visto muchas publicaciones aquí pero no he encontrado una solución para esto.¿Cómo se calcula el ancho de la fuente de cadena en píxeles?

Gracias de antemano ... !!!

+1

Si bien parece que 'measureText' es lo que estás pidiendo específicamente, ¿estás seguro de que tienes que hacerlo tan complicado? ¿Hay alguna razón por la que no puedas usar múltiples TextViews tal vez dispuestos en un 'TableLayout' en su lugar? – kabuko

+0

Muchas gracias ... múltiples TextViews funcionaron. –

Respuesta

21

Parece que hay un método measureText disponible en Paint. También encontré un example:

mPaint = new Paint(); 
mPaint.setAntiAlias(true); 
mPaint.setStrokeWidth(5); 
mPaint.setStrokeCap(Paint.Cap.ROUND); 
mPaint.setTextSize(64); 
mPaint.setTypeface(Typeface.create(Typeface.SERIF, Typeface.ITALIC)); 
// ... 
float w = mPaint.measureText(text, 0, text.length()); 
+0

Funciona como un encanto. Gracias –

-3

No sé si esto funciona, pero puede.

int textSize=20; 
Paint p=new Paint(); 
p.setTextSize(textSize); 
String string="Hello im a string."; 
public int getStringWidt() 
{ 
    return string.length*textSize; 
} 
+0

Dado que las letras de las letras de hoy en día tienen diferentes anchos, esta es solo una solución aproximada (dado el supuesto textSize = tamaño de letra en píxeles es correcto) – RookieGuy

4

Thanks Jake for the working solution, sin embargo, he encontrado que esto funcione para mí también:

someText = "Lorem Ipsum"; 
TextView myTextView = (TextView) findViewById(R.id.myTextView); 
float w = myTextView.getPaint().measureText(someText); 

Conseguir la pintura directamente del TextView que voy a trabajar con me hace sentir que el anwser será más preciso.

Cuestiones relacionadas