Получить размер текста в TextView - PullRequest
39 голосов
/ 18 июля 2011

У меня проблема с размещением textView в координатах x и y указанного центра. Сначала я попытался установить текст в textView и переместить вид на ширину и высоту вида. по этой ссылке .

Но это не работает, и я хотел бы попробовать что-то еще. Я хотел бы знать, если есть метод, чтобы получить размер, который указанный текст будет принимать в моем textView? Я имею в виду, я знаю текст и textSize, как я могу получить ширину и высоту, которую займет мой textView?

Что-то вроде метода (NSString)sizeWithFont; для тех, кто знает iPhone dev.

Ответы [ 3 ]

78 голосов
/ 29 мая 2014
Rect bounds = new Rect();

textView.getPaint().getTextBounds(textView.getText().toString(), 0, textView.getText().length(), bounds);

bounds.width() даст вам точную ширину текста в текстовом представлении.

62 голосов
/ 18 июля 2011

Если ваше текстовое представление называется TV

TV.setText("bla");
TV.measure(0, 0);       //must call measure!
TV.getMeasuredHeight(); //get height
TV.getMeasuredWidth();  //get width

Подробнее об этом (обновлено): Как получить ширину / высоту вида

10 голосов
/ 21 апреля 2016

Почему-то решение Midverse Engineer не дает мне всегда правильных результатов (по крайней мере, в некоторых версиях Android). Решение Sherif elKhatib работает, но имеет побочный эффект изменения Измеренная ширина и высота. Это может привести к неправильному позиционированию textView.

Мое решение:

width = textView.getPaint().measureText(text);
metrics = textView.getPaint().getFontMetrics();
height = metrics.bottom - metrics.top;
...