Есть ли метод, который возвращает ширину (в пикселях) текста, который нужно нарисовать на холсте Android, с помощью метода drawText () в соответствии с Paint, использованным для его рисования?
android
text
android-canvas
draw
NioX5199
источник
источник
источник
Дополнительный ответ
Есть небольшая разница между шириной, возвращаемой
Paint.measureText
иPaint.getTextBounds
.measureText
возвращает ширину, которая включает значение advanceX глифа, заполняющее начало и конец строки.Rect
Ширина возвращаемыйgetTextBounds
не имеет такой отступ , потому что границы является ,Rect
что плотно оборачивает текст.источник
источник
На самом деле существует три разных способа измерения текста.
GetTextBounds:
MeasureTextWidth:
И getTextWidths:
Обратите внимание, что getTextWidths может быть полезен, если вы пытаетесь определить, когда переносить текст на следующую строку.
MeasureTextWidth и getTextWidth равны и имеют расширенную ширину, которая измеряет, о которой писали другие. Некоторые считают это пространство чрезмерным. Однако это очень субъективно и зависит от шрифта.
Например, ширина от границ текста меры может показаться слишком маленькой:
Однако при добавлении дополнительного текста границы для одной буквы выглядят нормально:
Изображения взяты из руководства для разработчиков Android по пользовательскому отрисовке холста
источник
Ну я сделал по другому:
Надеюсь, что это поможет вам.
источник
Я использовал методы measureText () и getTextPath () + computeBounds () и создал Excel со всеми текстовыми атрибутами для шрифта фиксированного размера, который можно найти в https://github.com/ArminJo/android-blue-display/blob /master/TextWidth.xlsx . Там вы также найдете простые формулы для других текстовых атрибутов, таких как ascend и т. Д.
Приложение , а также функция drawFontTest () для генерации исходных значений , используемых в Excel, также доступны в этом репо.
источник
вы можете использовать "textPaint.getTextSize ()", чтобы получить ширину текста
источник