Intereting Posts
Изменение размера android datepicker Прокрутить веб-просмотр в Viewpager Могу ли я избежать встроенного полноэкранного видеоплеера с HTML5 на iPhone или Android? Хорошо ли использовать только GCM для разработки чат-приложений для XMPP-андроида? Изменение цвета текста заголовка ActionBar с использованием темы Light.DarkActionBar в AppCompat 21 Официальные значки Android для XXHDPI и XXXHDPI WebSockets для Android в приложении Phonegap с сервером и клиентом Node.js / Socket.IO Определите, имеет ли браузер клавиатуру / клавиши со стрелками на веб-странице BOOT_COMPLETED не работает Android SetRequestedOrientation перед показом ProgressDialog приводит к сбою Canvas.toDataURL не приводит к данным image / jpeg Android-приложение не может получить доступ к местоположению на эмуляторе, используя FusedLocationApi Как создать настраиваемый диалог с закругленными углами в android Ожидание службы media.audio_policy при загрузке android Как добавить новую активность в существующий проект в Android Studio?

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

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