Intereting Posts
Как найти серийный номер Android-устройства? Как загрузить более 1 МБ данных из sqlite db в android cursor? Как разбирать массив JSON без какого-либо объекта в «Дооснащении»? Загрузите файл apk с S3 с помощью DownloadManager Не удается создать проект Android с помощью Android Studio – Gradle 1.7 Как предотвратить изменение пользовательских представлений из-за изменений ориентации экрана Захват экрана GLSurfaceView для растрового изображения Бета-тестирование Google Play без опубликованного приложения? Android Google Maps v2 – установить уровень масштабирования для myLocation Как сохранить слушателя в пользовательском диалоге, открытом из фрагмента? Как сделать пусковую установку Как я могу обмениваться ресурсами между различными проектами Eclipse, чтобы избежать дублирования? Что означает «Sync Project with Gradle File»? Должен ли я вызвать super.onPostExecute (результат) в Android AsyncTask? Настройка цвета текста кнопки со стилем

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

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