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

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

Solutions Collecting From Web of "Как получить ширину строки на 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()); 

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