Определение размера многострочного TextView в Android

У меня есть Activity, в котором я хочу отобразить заголовок, занимающий верхнюю четверть приложения и отображающий динамический набор текста. В некоторых случаях все это умещается в одной строке, и я бы хотел, чтобы размер шрифта увеличился, чтобы он был большим и легко читаемым. В некоторых случаях он будет на нескольких строках (обычно меньше 4) и должен быть меньше.

Сложность заключается в том, что если я явно устанавливаю новые строки в setText, иногда он вставляет новую строку там, где я ее не ожидал. , то есть:

"My first line of text\nMy Second line of text"
Might get turned into (it's right adjusted in this version):
"My first line of
             text
   My second line
          of text"

I ' Я не знаю, как предотвратить попытки TextView вставлять символы новой строки или позволить ему просто позаботиться о форматировании всего этого. Если я сделаю какой-то текст одним действительно длинным словом, он вставит новую строку посередине в какой-то выбранный момент. А в других случаях я просто случайным образом получаю последние несколько строк текста.

Должен ли я просто явно установить размер шрифта очень маленьким, чтобы он отображался правильно, а затем вручную настроить размер? Есть ли «лучшая практика», которую я должен использовать для этого? Если я установил размер шрифта достаточно большим, это вроде бы сработает, но было бы неплохо выяснить, какой «правильный» способ сделать это. И я бы предпочел не добавлять вручную 4 однострочных TextView и форматировать их сам.

Я использую XML-макет:

<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="10dip"
        android:layout_marginRight="8dip"
        android:singleLine="false"
        android:ellipsize="marque"
        android:gravity="right|bottom"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textSize="30sp"
/>
10
задан William 22 October 2010 в 21:55
поделиться