2010-07-06 1 views
18

У меня был хороший поиск этого здесь и не могу найти решение.Как установить минимальную ширину (в символах) для TextView?

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

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

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

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

ответ

46

попробовать это:

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

Спасибо, это похоже на хороший «un! –

+0

Это работает как магия. –

+1

вы также можете добавить android: gravity = "center" – Shyri

-2

Использование андроида: MAXLENGTH атрибут TextView.Please чтения this

+0

Привет, спасибо за ваш ответ, но это минимальная длина, в которой я действительно нуждался. :-) –

0

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

16

Эмс работает, если ваш шрифт моноширинный. Для пропорциональных шрифтов вам нужна ширина двух «0», а не «двух». Вы можете вернуться к TextPaint.measureText, например:

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

Работает как волшебство! Большое спасибо за распространение этого фрагмента кода. :) –

+1

Настройка ems не работала для меня, но это было так. Спасибо pforhan :) – jayanth