Как установить минимальную ширину (в символах) для TextView?

У меня был хороший поиск этого здесь и не могу найти решение.

У меня есть TextView в RelativeLayout, который содержит целое число. Число будет варьироваться от 1 до 99 - может ли кто-нибудь сказать мне, как размер  TextView так, чтобы его ширина всегда была шириной строки "99",  даже если он содержит только "1"?

Мне нужно это, потому что позиции компонентов справа от этого  TextView зависит от его ширины, поэтому все позиции зависят от того, сколько  цифры, содержащиеся в TextView.

Я не возражаю, если это сделано в XML или кодексе - я просто хочу избежать  для установки ширины TextView в пикселях!

Спасибо за любые возможные решения; Пожалуйста, спросите, не пропустил ли я какой-либо  важная информация!

Ответ 1

попробуйте следующее:

android:layout_width="wrap_content"
android:minEms="2"

Ответ 2

Ems работает, если ваш шрифт моноширин. Для пропорциональных шрифтов вам нужна ширина двух "0", а не "двух". Вы можете вернуться в TextPaint.measureText следующим образом:

float measureText = zip.getPaint().measureText("00000");
zip.setWidth(zip.getPaddingLeft() + zip.getPaddingRight() + (int) measureText);

Ответ 3

Лучший способ - использовать TextPaint. Вот простой пример:

TextPaint textPaint = new TextPaint();
textPaint.setTextSize(yourTextView.getTextSize());
yourTextView.setMinWidth((int) textPaint.measureText("-88.88"));

Не забудьте указать размер текста в вашем объекте TextPaint
В measureText введите максимально длинную строку, которую вы ожидаете увидеть (я написал "-88.88", предполагая, что мой текст может обрабатывать положительные или отрицательные числа ниже 100 с двумя цифрами после запятой)

Ответ 4

Я думаю, что вы ищете метод getTextBounds() в классе Paint. Не пробовал это сам.

Ответ 5

Использовать атрибут android: maxLength в TextView. Пожалуйста, прочитайте this