По-видимому, существует текстовое ограничение длины для элемента TextView при использовании в ListView. Я должен признать, что я не проверял фактический предел, с которым я столкнулся, но мне ясно, что 2k символов не biggie, где 4k символов просто не отображается. И "не отображается" не так уж и прав, поскольку экран, кажется, прокручивается для полной длины TextView (хотя все, что я вижу, является пробелом).
Моя проблема: я показываю ListView для сообщения электронной почты. Все части почты находятся в отдельных элементах TextView, которые попадают в ListView. Когда длинное сообщение (где-то выше 2k символов) помещается в TextView, TextView остается пустым, но занимает занимаемое пространство.
Мой вопрос: Какие альтернативы/варианты существуют, чтобы решить эту проблему? Например, отображение всего сообщения (даже длинные).
Спасибо кому-нибудь за помощь.
Есть ли причина, по которой вы должны использовать ListView? Похоже, вам лучше обслуживать LinearLayout или RelativeLayout внутри ScrollView или просто поместить тело письма внутри ScrollView, если вы хотите сохранить другие текстовые элементы на экране.
Если вы хотите придерживаться ListView, вы можете использовать String # substring (int beginIndex, int endIndex) для эллипсирования тела и отображения полного тела в другой Activity, запущенной в обработчике onListItemClick для представления списка. Вы можете использовать свойство android: ellipsize в вашем XML-макете (или TextView # setEllipsize в Java-коде), чтобы ограничить текст одной строкой, но это, вероятно, не то, что вы хотите.
Я нашел причину этой причуды!
Это BUG, который существует в Android < 2.2!
После того как dziobas указал, что он заполнил строки 10k char на 2.2, я попробовал это на новом изображении эмулятора.
Я все еще собираюсь изменить свой код в конце, чтобы не использовать ListView и переопределить свой собственный класс ListView, как предложил Брайан
Вы пытались установить свойство android:maxLength
для элемента TextView в xml
или
установить фильтр new InputFilter.LengthFilter(maxlength)
?
вы можете установить для свойства singleLine значение true, чтобы только текст, видимый в одной строке, можно было отображать в списке или дополнительно установить свойство maxline равным 1