Измерение ширины текста на Canvas (Android)

Есть ли метод, который возвращает ширину (в пикселях) текста, который будет нарисован на холсте Android, используя метод drawText () в соответствии с Paint, который используется для его рисования?

Solutions Collecting From Web of "Измерение ширины текста на Canvas (Android)"

Вы посмотрели файл android.graphics.Paint.measureText (String txt) ?

Paint paint = new Paint(); Rect bounds = new Rect(); int text_height = 0; int text_width = 0; paint.setTypeface(Typeface.DEFAULT);// your preference here paint.setTextSize(25);// have this the same as your text size String text = "Some random text"; paint.getTextBounds(text, 0, text.length(), bounds); text_height = bounds.height(); text_width = bounds.width(); 

Ну, я сделал по-другому:

 String finalVal ="Hiren Patel"; Paint paint = new Paint(); paint.setTextSize(40); 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(finalVal, 0, finalVal.length(), result); Log.i("Text dimensions", "Width: "+result.width()+"-Height: "+result.height()); 

Надеюсь, что это поможет вам.

Я использовал методы measureText () и getTextPath () + computeBounds () и создавал Excel со всеми текстовыми атрибутами для шрифта фиксированного размера, которые можно найти в https://github.com/ArminJo/android-blue-display/blob /master/TextWidth.xlsx . Там вы найдете также простые формулы для других атрибутов текста, таких как восхождение и т. Д.

Приложение, а также функция drawFontTest () для генерации необработанных значений, используемых в excel, также доступны в этом репо.

Дополнительный ответ

Существует небольшая разница между шириной, возвращаемой Paint.measureText и Paint.getTextBounds . measureText возвращает ширину, которая включает в себя значение advanceX глифа, заполняющее начало и конец строки. Ширина Rect возвращаемая getTextBounds , не имеет этого дополнения, поскольку границы – это Rect который плотно обертывает текст.

источник

Вы можете использовать «textPaint.getTextSize ()», чтобы получить ширину текста