Как обойти текстовые ограничения элемента TextView?

1

По-видимому, существует текстовое ограничение длины для элемента TextView при использовании в ListView. Я должен признать, что я не проверял фактический предел, с которым я столкнулся, но мне ясно, что 2k символов не biggie, где 4k символов просто не отображается. И "не отображается" не так уж и прав, поскольку экран, кажется, прокручивается для полной длины TextView (хотя все, что я вижу, является пробелом).

Моя проблема: я показываю ListView для сообщения электронной почты. Все части почты находятся в отдельных элементах TextView, которые попадают в ListView. Когда длинное сообщение (где-то выше 2k символов) помещается в TextView, TextView остается пустым, но занимает занимаемое пространство.

Мой вопрос: Какие альтернативы/варианты существуют, чтобы решить эту проблему? Например, отображение всего сообщения (даже длинные).

Спасибо кому-нибудь за помощь.

Теги:
textview

4 ответа

1
Лучший ответ

Есть ли причина, по которой вы должны использовать ListView? Похоже, вам лучше обслуживать LinearLayout или RelativeLayout внутри ScrollView или просто поместить тело письма внутри ScrollView, если вы хотите сохранить другие текстовые элементы на экране.

Если вы хотите придерживаться ListView, вы можете использовать String # substring (int beginIndex, int endIndex) для эллипсирования тела и отображения полного тела в другой Activity, запущенной в обработчике onListItemClick для представления списка. Вы можете использовать свойство android: ellipsize в вашем XML-макете (или TextView # setEllipsize в Java-коде), чтобы ограничить текст одной строкой, но это, вероятно, не то, что вы хотите.

  • 0
    Причина использования listView заключается в том, что все приложение состоит из информации, сведенной с помощью ListViews. Сборка всех экранов вручную будет чрезвычайно громоздкой. Поэтому я написал очень классный ListAdapter, который соответствует моим точным потребностям. Каждая строка может иметь несколько типов отображаемой информации. В этом случае сообщение просто отображается как есть в TextView (который обернут в LinearLayout lol)
  • 0
    Кстати, я собираюсь держать вашу подсказку, поскольку это, вероятно, произойдет в любом случае. Я столкнулся с несколькими серьезными недостатками в ListView, и ваше предложение, вероятно, является лучшим, чтобы избавиться от всего этого :))
0

Я нашел причину этой причуды!
Это BUG, ​​который существует в Android < 2.2!

После того как dziobas указал, что он заполнил строки 10k char на 2.2, я попробовал это на новом изображении эмулятора.
Я все еще собираюсь изменить свой код в конце, чтобы не использовать ListView и переопределить свой собственный класс ListView, как предложил Брайан

0

Вы пытались установить свойство android:maxLength для элемента TextView в xml
или
установить фильтр new InputFilter.LengthFilter(maxlength)?

  • 0
    Это именно то, что я сейчас делаю, так что текст, по крайней мере, появится. В коде я проверяю, является ли текст слишком длинным, вырезать часть с конца, чтобы я мог сообщить пользователю, что текст слишком длинный.
  • 0
    Какой тип адаптера вы используете?
Показать ещё 4 комментария
0

вы можете установить для свойства singleLine значение true, чтобы только текст, видимый в одной строке, можно было отображать в списке или дополнительно установить свойство maxline равным 1

  • 0
    Это не вариант. Мне нужно, чтобы сообщение отображалось как есть, будь то длинное или короткое сообщение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню