У меня есть вид lsit и я, что мне нужно добавить текст. в адаптере, мне нужно добавить... в конце, и я использовал следующие когда я даю
android:ellipsize="end"
в единственной строке отображается строка 2
например:
asdnfsdfdsf asdfsdfasdf
sdfsd sdfsdf sdfsd ad...
И когда я даю
android:ellipsize="start"
это как:
asdnfsdfdsf asdfsdfasdfd
... sdfsd sdfsdf sdfsd ad
Полный код, который я использовал:
<TextView android:layout_width="wrap_content" android:background="#016A7D"
android:layout_height="80dp" android:textColor="#000000"
android:maxLines="4"
android:id="@+id/list_report_desciption"
android:ellipsize="end"
/" > И я получил результат:
Что именно умная планета
выглядит как? Как меняется ИТ? A...
на самом деле он содержит более 6 строк
Есть ли что-то, что мне нужно установить, чтобы мне нужно было 3 строки
Спасибо
Ничего не сработало для меня:-(
Я просто фиксировал длину. Вырежьте строку этой длины и добавьте "..." после этого.
Теперь он работает на меня.
Текстовая эллипсизация кажется ошибочной, приближаясь к этому отчету: http://code.google.com/p/android/issues/detail?id=10554
Обходной путь позволяет эллипсировать одну строку текста, установив для атрибута android:singleLine
значение true. Но этот атрибут устарел.
Решение, которое вы приняли, не будет правильно масштабироваться на всех устройствах.
Причина: ширина "a" меньше, чем "A", поэтому, если вы обрезаете строку на основе некоторого размера (например, 15 букв) и добавляете "..." через код, Вы можете увидеть, что результаты не ожидаются.
Теперь приступим к решению: -
Решения:
Решение №1: Добавьте в свой TextView следующие 3 атрибута, и вы получите нужный результат:)
<TextView
android:ellipsize="end"
android:lines="1"
android:scrollHorizontally="true" />
Решение № 2: Другим обходным решением может быть, вы можете решить выделить текст (фантастическая анимация, перемещающая ваш текст справа налево). Для этого вам нужны следующие атрибуты в TextView xml: -
<TextView
android:id="@+id/my_text_view"
android:ellipsize="marquee"
android:lines="1"
android:scrollHorizontally="true"
android:marqueeRepeatLimit="marquee_forever" />
И затем в вашем коде вам нужно получить TextView по его идентификатору и вставить следующую строку: -
TextView myTextView = (TextView) findViewById(R.id.my_text_view);
myTextView.setSelected(true);
#### Изменить: - ####
Я просто понял, что для моего решения для работы в версиях android больше 2.3.x нам нужно добавить следующую строку в наш TextView xml: -
android:singleLine="true"
Хотя это устаревший атрибут, но вы должны добавить это, иначе marquee или "..." не будут работать.
Надеюсь, что это ответит на вопрос:)
Я искал для себя простое решение для себя, у меня получилось что-то вроде:
private String getTextWithMoreIndicator(TextView textView, String text) {
long maxVisibleChars = textView.getPaint().breakText(text, true, textView.getMeasuredWidth(), null);
if(maxVisibleChars < text.length()) {
text = text.substring(0, (int)maxVisibleChars -3) + "...";
}
return text;
}