Я бы тоже хотел набрать рост, если возможно.
android
string
bounding-box
Микаэль Линдлоф
источник
источник
textView.setTextSize()
.Если вам просто нужна ширина, вы можете использовать:
http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String)
источник
TextPaint paint = new TextPaint(); paint.setTextSize(textSize);
.textSize
в пикселях.Есть два разных размера ширины текста. Один - это количество пикселей, нарисованных по ширине, другой - количество «пикселей», на которые курсор должен перемещаться после рисования текста.
paint.measureText и paint.getTextWidths возвращают количество пикселей (в формате с плавающей запятой), на которое курсор должен переместиться после рисования данной строки. Для количества окрашенных пикселей используйте paint.getTextBounds, как указано в другом ответе. Я считаю, что это называется «продвижение» шрифта.
Для некоторых шрифтов эти два измерения различаются (много), например, в шрифте Black Chancery буквы выходят за другие буквы (перекрываются) - см. Заглавную букву «L». Используйте paint.getTextBounds, как упоминалось в другом ответе, чтобы нарисовать пиксели.
источник
Я измерил ширину таким образом:
Это вам поможет.
источник
Скорее всего, вы хотите знать размеры, нарисованные для данной строки текста с заданным шрифтом (то есть конкретным шрифтом,
Typeface
таким как семейство шрифтов «sans-serif» со стилем BOLD_ITALIC и конкретным размером в sp или px).Вместо того, чтобы раздувать полномасштабный текст,
TextView
вы можете перейти на более низкий уровень и работать сPaint
объектом непосредственно для однострочного текста, например:Для многострочного или составного текста (
SpannedString
) рассмотрите возможность использованияStaticLayout
, в котором вы указываете ширину и получаете высоту. Для очень подробного ответа об измерении и рисовании текста на холсте в настраиваемом представлении см. Https://stackoverflow.com/a/41779935/954643Также стоит отметить ответ @arberg ниже о пикселях, нарисованных в зависимости от ширины продвижения («количество пикселей (в float), на которое курсор должен перемещаться после рисования данной строки»), на случай, если вам нужно с этим разобраться.
источник
Я хотел бы поделиться лучшим способом (более универсальным, чем текущий принятый ответ) получения точной ширины нарисованного текста (
String
) с использованием статического классаStaticLayout
:этот метод более точен, чем
textView.getTextBounds()
, поскольку вы можете рассчитать ширину отдельной строки в многострочномTextView
или не использоватьTextView
для начала (например, в пользовательскойView
реализации).Этот способ похож на
textPaint.measureText(text)
, но в редких случаях кажется более точным.источник