Автоматическое масштабирование текста TextView для размещения в пределах границ - Как позвонить? - PullRequest
1 голос
/ 04 февраля 2012

Вопрос новичка в Java - на всех публикациях для автоматического масштабирования текста никто не указывает, как вы на самом деле используете предоставленный класс. Похоже, что одним из лучших решений является Чейз в Текстовое представление Auto Scale Text для размещения в пределах

У кого-нибудь есть идеи, как его использовать? Например:

String bigTextString = "This is a test!";

TextView t = (TextView)findViewById(R.id.big_text);
t.setTextSize(returnFontSize(bigTextString));
t.setText(bigTextString);

returnFontSize не существует и показан только для иллюстрации. Класс AutoResizeTextView правильно настроен в своем собственном файле.


Спасибо (игнорируйте краткий комментарий ниже, так как в StackOverflow есть ошибка, которая не позволяет повторно редактировать комментарий, и он также ограничен 512 символами).

Я, должно быть, все еще что-то упускаю. Если я использую только две предложенные строки, где вы передаете текстовую строку? Я пробовал что-то похожее, но оно просто вылетает при запуске, что имеет смысл.

AutoResizeTextView t = new AutoResizeTextView(this); 
linearMain.addView(findViewById(R.id.big_text));

addView завершается с ошибкой «IllegalStateException: указанный дочерний элемент уже имеет родителя. Сначала необходимо вызвать removeView () для родительского дочернего элемента». Это выглядит странно, поскольку я не хочу удалять представление (я думаю) и я не понимаю, как он имеет представление о строке, выводимой на экран.

Является ли addView действительно необходимым, поскольку он уже определен в макете.

Я просто хочу передать ему текст. Например:

TextView t = (TextView)findViewById(R.id.big_text);
t.setTextSize(textSize);
t.setTextColor(textColor);
t.setText(bigTextString);

Это работает, за исключением того, что Android плохо вписывается в текст на экране в зависимости от того, что находится в "bigTextString".

1 Ответ

0 голосов
/ 04 февраля 2012

Хорошо, если у вас есть класс, описывающий, как создавать и модифицировать объект, все, что вам нужно сделать, - это создать и изменить его с помощью конструктора и методов. Ниже один из вашей ссылки.

public FontFitTextView(Context context, AttributeSet attrs) {
    super(context, attrs);

    float size = this.getTextSize();
    if (size > MAX_TEXT_SIZE)
        setTextSize(MAX_TEXT_SIZE);
}

Вы вызываете свою деятельность FontFitTextView textViewName = new FontFitTextView(context, attrs);, а затем добавляете ее в представление по layoutName.addView(textViewName); Это означает, что вам нужно найти представление, которое вы используете для макета, по его android: id, поскольку я предполагаю, что вы не хотите создавать весь макет программно. Вы также можете вызвать конструктор в xml: <packagename.FontFitTextView />

tl; dr - использовать конструктор

...