Подтвердить что ты не робот

End TextView с 3 точками с использованием maxLength

У меня есть TextView в моем макете, который является wrap_content в layout_width. Он ограничен максимум 15 символами, поэтому я использую maxLength.

Мне нужно закончить этот TextView тремя точками (...), и это происходит только тогда, когда я даю layout_width фиксированный размер с dp, чего я не хочу делать.

Я знаю, что это возможно с помощью кода и вырезать строку после 15-го символа, а затем добавить 3 точки, но я предпочитаю делать это с помощью XML.

Любая идея, как закончить текст с 3 точками и оставить его wrap_content?

<TextView
        android:id="@+id/inbox_contactName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="1"
        android:maxLines="1"
        android:ellipsize="end"
        android:singleLine="true"
        android:maxLength="15"
        android:textColor="#0670b4"
        android:textSize="16sp" />
4b9b3361

Ответ 1

Это решит вашу проблему, используйте ellipsize Свойство в вашем XML-коде

android:ellipsize="end" <!-- This makes the magic ... thing -->
android:maxEms="15" <!-- Limit of the Text -->
android:singleLine="true" <!-- In case if you want everything in one line -->

Изменить: singleLine устарело. Вместо этого используйте maxlines="1".

Ответ 2

Я собираюсь (из комментария), что @Yaniv уже решил его использовать код - но это правильный способ сделать это (с помощью xml). Может помочь другим пользователям, которые приземляются здесь. Трюк должен использовать как toleftof, так и torightof.

<RelativeLayout>
...
 <TextView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:singleLine="true"
        android:layout_toRightOf="@id/some_element1"
        android:layout_toLeftOf="@id/some_element2"/>
...
<RelativeLayout>

Ответ 3

Вы не можете использовать как maxLength, так и Ellipsize, хотя вы можете определить Maximum EMS в следующем примере

<TextView
        android:id="@+id/tv_hist_source_lang"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxEms="8"
        android:maxLines="1"
        android:text="TextView"
        android:textAppearance="?android:attr/textAppearanceMedium" />

It looks like this

Ответ 4

используйте этот android:ellipsize="end"

Ответ 5

Один из самых простых способов - добавить Right Padding + Ellipsize

<TextView
            android:id="@+id/txtvw_contentcell_subhead"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Polem sampler, Lorem Ipsum golep tolem burop yemit noski"
            android:ellipsize="end"
            android:maxLines="1"
            android:textColor="@color/caption_black_color"
            android:textSize="@dimen/caption_size"
            android:paddingRight="40dp"/>

Вот пример текста субтитров с префиксом char. введите описание изображения здесь

Ответ 6

Вы можете использовать

android:maxWidth="100dp"
android:maxLines="1"
android:ellipsize="end"

Только это работает для меня.

Ответ 7

Мне нужно было сделать это с помощью Radio Button, и я хотел ограничить размер одной строкой. Когда я использовал Android:singleline="true", круг проверки переключателя исчез. Вот код, который наконец-то сработал:

android:ellipsize="end"
android:maxLines="1"

Нет необходимости устанавливать ems. Это, вероятно, будет работать и в TextView и других компонентах пользовательского интерфейса. Надеюсь, это поможет кому-то.

Ответ 8

Вы можете просто изменить String, когда длина превышает 20, чтобы добавить эллипсис.

Ответ 9

Очень важно: ellipsize = "end" работает только в том случае, если для maxLength установлено значение, превышающее количество символов в одной строке. Вы можете использовать wrap_content если wrap_content конец TextView и начнете wrap_content с любым другим представлением.

Ответ 10

удалите строку из xml

android:lines="1"
        android:maxLines="1"

Ответ 11

Поместите другое текстовое окно рядом с текущим текстом и установите его данные в "...". Вот и все.