Как я могу установить минимальную ширину (в символах) для TextView? - PullRequest
22 голосов
/ 06 июля 2010

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

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

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

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

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

Ответы [ 5 ]

55 голосов
/ 04 июня 2011

попробуйте это:

android:layout_width="wrap_content"
android:minEms="2"
18 голосов
/ 11 мая 2012

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

float measureText = zip.getPaint().measureText("00000");
zip.setWidth(zip.getPaddingLeft() + zip.getPaddingRight() + (int) measureText);
1 голос
/ 13 мая 2019

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

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

Не забудьте указать размер текста в вашем объекте TextPaint.В measureText введите максимально длинный текст в зависимости от ситуации.

0 голосов
/ 22 февраля 2011

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

0 голосов
/ 22 февраля 2011

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

...