Как получить ширину строки на Android?

Я хотел бы получить высоту, если это возможно.

Вы можете использовать метод getTextBounds(String text, int start, int end, Rect bounds) объекта Paint. Вы можете использовать объект paint, предоставленный TextView или создать его самостоятельно с желаемым внешним видом.

Используя Textview, вы можете сделать следующее:

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

Если вам нужна только ширина, которую вы можете использовать:

 float width = paint.measureText(string); 

http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String)

Для текста есть два разных значения ширины. Один из них – это число пикселей, которое было нарисовано по ширине, а другое – количество пикселей, курсор должен быть расширен после рисования текста.

Paint.measureText и paint.getTextWidths возвращают количество пикселей (в float), которые курсор должен быть расширен после рисования данной строки. Для количества окрашенных пикселей используйте paint.getTextBounds, как указано в другом ответе. Я считаю, что это называется «Advance» шрифта.

Для некоторых шрифтов эти два измерения отличаются (alot), например, шрифт Black Chancery имеет буквы, которые простираются мимо других букв (перекрываются) – см. Капитал L. Используйте paint.getTextBounds, как упоминалось в другом ответе, чтобы получить окрашенные пиксели.

Я измерил ширину таким образом:

 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()); 

Это поможет вам.

Intereting Posts
Android и отображение многострочного текста в TextView в TableRow Рисовать линию под TextView на Android Никакие данные не возвращаются в намерении при использовании Google+ Использование сканера штрих-кода Zxing вызывает SecurityException Как отображать подсказку в android? Как получить максимальную ширину и высоту устройства в android Фильтрация пользовательского адаптера IndexOutOfBoundsException Как запустить приложение с помощью deeplink в android DialogFrag # show () из фрагментации «IllegalStateException: не удается выполнить это действие после onSaveInstanceState» Формат в файле строковых ресурсов Android SDK – запуск функций в фоновом режиме Как я могу оживить изменение цвета панели состояния и панели инструментов (как это делает новое приложение «Календарь») Родительский клик не запускается при повторном просмотре Лучший способ кэшировать ответ XML / JSON в мое приложение. Полный текстовый файл? Компиляция Lua lib для Android – успех, но странные segfaults