Мне нужно создать многострочное текстовое представление. Мой компонент достаточно большой, чтобы отображать как минимум 4 строки с эллипсом, но отображаются только 2 строки. Я попытался изменить минимальное и максимальное количество строк компонента, но это ничего не меняет.
163
Ответы:
Вот решение проблемы. Это подкласс TextView, который на самом деле работает для многоточия. Код android-textview-multiline-ellipse, приведенный в предыдущем ответе, который, как я обнаружил, содержит ошибки при определенных обстоятельствах, а также находится под лицензией GPL, что на самом деле не работает для большинства из нас. Вы можете свободно использовать этот код без указания авторства или по лицензии Apache, если хотите. Обратите внимание, что есть слушатель, который уведомит вас, когда текст станет эллиптическим, что я сам нашел весьма полезным.
источник
В моем приложении у меня была похожая проблема: 2 строки и, в конце концов, добавьте «...», если строка была слишком длинной. Я использовал этот код в XML-файле в теге textview:
источник
setText(..., TextView.BufferType.SPANNABLE);
.Я тоже столкнулся с этой проблемой. Есть довольно старая ошибка, которая остается без ответа: Ошибка 2254
источник
Попробуйте это, это работает для меня, у меня есть 4 строки, и это добавляет «...» в конце последней / четвертой строки. Это так же, как ответ морали, но у меня там есть singeLine = "false".
источник
Получил эту проблему, и, наконец, я строю себе краткое решение. Вам просто нужно вручную увеличить размер нужной строки, ваш атрибут maxLine обрежет ваш текст.
Этот пример вырезал ваш текст максимум на 3 строки
источник
Я объединил решения Мика Хэйнлайна, Алекса Бэлуза и Пола Имхоффа, чтобы создать многострочную форму,
TextView
которая также поддерживаетSpanned
текст.Вам нужно только установить
android:ellipsize
иandroid:maxLines
.Полный источник: EllipsizingTextView.java
источник
В моем случае нет необходимости кодировать это на Java. Все работает как положено. Не нужно что-то подобное
android:singleLine="false"
.Но, похоже, в предварительном просмотре Android Studio (v3.0) есть ошибка:
Учитывая Android 7.1.1 на моем устройстве это работает:
источник
Основываясь на решениях Майка Хэйнлайна и комментария Алебса, я пришел со следующим подходом, который работает с Spanned текстами, так что, например,
myTextView.setText(Html.fromHtml("<b>Testheader</b> - Testcontent"));
работает! Обратите внимание, что это работает толькоSpanned
сейчас. Это может быть изменено для работыString
и такSpanned
или иначе.источник
Для тех, кто заинтересован, вот порт C # Xamarin.Android прекрасного решения Мики:
источник
Чтобы добавить
...
в конец второй строки, сохраняя 1 строку, если текст короткий:источник
Просто добавьте код в вашу деятельность
это добавит многоточие в конце текстового обзора
источник
Расширьте TextView и переопределите эти методы:
источник
Это моё решение. Вы можете скачать демо на моем github. https://github.com/krossford/KrossLib/tree/master/android-project
Этот скриншот был демо, которое
maxLines = 4
, я думаю, работает хорошо.источник
У меня была такая же проблема. Я исправил это, просто удалив android: ellipsize = "marquee"
источник
Код работал очень хорошо! Вы можете перегружать метод onSizeChanged, если нужно изменить не только текст.
источник
Этот также обрабатывал мой HTML,
Исходный источник ССЫЛКА
источник
Главный ответ от Micah Hainline прекрасно работает, но еще лучше то, что библиотека, созданная из него пользователем aleb, который он разместил в комментариях под ответом Micahs:
Есть еще несколько функций, если вам нужен только TextView, он здесь .
Может быть, это поможет другим найти его быстрее, чем я :-)
источник
Уже поздно, но я нашел лицензионный класс Apache от Android, который используется в стандартном почтовом приложении: https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/184ec73/src/com/android/ почта / щ / EllipsizedMultilineTextView.java
источник
Есть несколько атрибутов, которые вы должны проверить: android: lines, android: minLines, android: maxLines. Чтобы отобразить максимум 4 строки и сделать их эллиптическими, вам просто нужны android: maxLines и android: ellipsize:
источник
Вы должны включить это в ваше текстовое представление:
по умолчанию это правда. Вы должны явно установить его как ложное.
источник
code <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLines="4" android:ellipsize="marquee" android:singleLine="false" android:text="Hai make this a very long string that wraps at least 4 lines!" />