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

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

Вы посмотрели файл 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 ()», чтобы получить ширину текста

Intereting Posts
Как установить тему для всего приложения в коде, но не в манифесте? Иммерсивный полноэкранный режим ниже 4.4 Android – "ваше устройство несовместимо с этой версией" ToUpperCaseLocale () vs toUpperCase () – теперь настроен на Android 4.2 Как получить макет Inflater с учетом контекста? Android: как начать работу, определенную в проекте библиотеки Webview открывает браузер по умолчанию, я не знаю, куда класть код Не удается сохранить файлы на внешнем хранилище, даже с разрешениями пользователя Использование Android для связи с USB-HID-устройством Как правильно установить контрольную точку исключения в Android Studio? Ошибка «Отсутствие экземпляра типа» при вызове метода из другого класса в Android Как отключить / включить диалоговые отрицательные положительные кнопки? Как вставить клип YouTube в WebView на Android Динамически изменять значения colors.xml, чтобы изменить внешний вид приложения android. Как преобразовать LinearLayout в изображение?