Как отметил Джон, вы не сможете получить высоту сразу после setText. Я не уверен, что использование getHeight () для самого TextView вам очень поможет. Высота представления зависит не только от высоты видимого текста в представлении, но также и от группы / макета представления, в котором находится TextView. Если группа представлений сообщает TextView, чтобы максимизировать высоту, getHeight () не даст вам нигде даже если вы подождете, пока текст будет обработан.
Я вижу несколько способов сделать это:
- Подкласс TextView и перезаписать метод onSizeChanged. Там вызовите supers onSizeChanged, затем получите число строк в TextView с помощью getLineCount () и высоту на строку с помощью getLineHeight (). Это может или не может быть лучше, чем использование getHeight (), в зависимости от вашего макета или еще чего.
Не используйте размеры Textviews. Получите TextViews Paint с TextView.getPaint (), а затем вычислите ширину и высоту из
Прямоугольные границы;
paint.getTextBounds (text, 0, text.length (), bounds);
Теперь у вас будут размеры в границах. Теперь вы можете работать с paint.breakText, чтобы увидеть, сколько текста вы поместите на одной строке. Вероятно, слишком много хлопот и не гарантировано (на мой неопытный взгляд) для той же логики, что и TextView.