Текст не имеет размера эллипса - PullRequest
25 голосов
/ 21 июля 2011

У меня есть TextView для установки размера эллипса, но когда я помещаю текст в него, он этого не делает. Есть идеи?

<TextView 
    android:id="@+id/LegalsView" 
    android:ellipsize="end"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium" />

Ответы [ 12 ]

63 голосов
/ 25 октября 2011

Попробуйте:

android:singleLine="true"
17 голосов
/ 21 июля 2011
android:layout_width="wrap_content"

позволит TextView расширяться так долго, как это необходимо (включая запуск с экрана).Чтобы сделать его эллиптическим, вам нужно будет установить ширину в соответствии с рекомендациями гражданина Конн, предпочтительно с android:layout_width="fill_parent" вместо абсолютного значения.

Дополнительные подсказки: вам также нужно установить maxLines:TextView (вероятно, к 1), и для отображения фактического многоточия ("..."), вам, вероятно, также придется установить

android:scrollHorizontally="true"
10 голосов
/ 01 августа 2013

Нужно сопоставить настройки, для андроида можно правильно рассчитать положение объекта. Имеет несколько возможных комбинаций и зависит от остальной части макета на одной строке.

Это комбинация, которая работает:

android:layout_width="0dip" // dynamic width
android:layout_weight="1"   // less weight, other objects still "0"
android:ellipsize="end"     // ... into end of text (right)
android:singleLine="true"   // one line, deprecated, but necessary for some ambients
android:maxLines="1"        // one line, new mode

Таким образом, вы указываете вес, если вы используете динамический макет или просто фиксированный размер, затем указывает, что у вас есть только одна строка, и настраивает отображение «...».

5 голосов
/ 02 июня 2013

Мое приложение начало игнорировать максимальные и многоточие, когда я добавил

android:textIsSelectable="true"

Кажется, что эти опции не совместимы друг с другом.

5 голосов
/ 29 мая 2012

Единственный способ выполнить эту работу - установить width="1dp", weight="1", ellipsize="end", maxLines="1" и scrollHorizontally="true".Первые два имеют тот же эффект, что и width="match_parent", при этом виджет не расширяется по краям экрана, остальные три параметра необходимо выполнить, чтобы текст имел размер эллипса.

3 голосов
/ 21 июля 2011

Если вы пытаетесь заставить многолинейный многоточие работать, к сожалению, он работает не очень хорошо.Это известная ошибка в платформе Android, и, насколько я знаю, она не была исправлена.
В TextView лучшее, что вы можете получить, - это эллиптизация двух строк (чего можно добиться, установив

android:maxLines="2"

См. эту ссылку.
Даже с абсолютной шириной, как упомянуто в другом ответе, она по-прежнему дает вам максимум 2 строки многоточия. (Но, как уже упоминалось, одиночнаямноготочие достижимо). Так, например, ваш текст может заполнить ваш 8-строчный TextView, но будет выглядеть так, когда вы включите многоточие:

+---------------------------------------------------+
|                                                   |
| This is my cool text that is supposed to fill the |
| entire textview but unfortunately because of t... |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
+---------------------------------------------------+

Если вы знаете размер вашего TextView, вы можетеиспользуйте пользовательский компонент, доступный здесь (К сожалению, проект кода Google, который первоначально размещался, кажется, исчез, поэтому эта ссылка - все, что я мог найти).

2 голосов
/ 21 ноября 2012

Это решение работает:

android:ellipsize="end"
android:singleLine="false"
android:lines="3"
android:maxLines="3"

Ширина также может быть установлена ​​на "wrap_content"

2 голосов
/ 21 июля 2011

Если вы не определяете конкретную ширину для TextView, текст будет сначала иметь эллиптический размер, когда ваш текст достигнет ширины родительского представления.

0 голосов
/ 10 октября 2017

Вы также можете установить maxLines так:

        <TextView
            android:id="@+id/txt_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="3"
            android:ellipsize="end"
            android:textStyle="bold"/>

Эллипсы появляются, когда текст превышает установленное значение maxLines.

0 голосов
/ 28 июля 2016

Работает только во время выполнения, сделайте что-то вроде этого:

textView.setEllipsize(TruncateAt.END);
textView.setLines(1);
textView.setHorizontallyScrolling(true);
textView.setText("Long text goes here");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...