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" /> 

Solutions Collecting From Web of "End TextView с 3 точками с использованием maxLength"

Это решит вашу проблему. Используйте свойство 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" используйте maxlines="1" .

Я собираюсь (из комментария), что @Yaniv уже решил его использовать код – но это правильный способ сделать это (с помощью xml). Может помочь другим пользователям, которые приземляются здесь. Trick – использовать как 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> 

Вы не можете использовать как 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" /> 

Это выглядит так

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

Один из самых простых способов – добавить 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"/> 

Ниже приведен пример текста субтитров с ограничением символов. Введите описание изображения здесь

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

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

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

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

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

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

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

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

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

ОЧЕНЬ ВАЖНО: ellipsize = "end" работает только тогда, когда maxLength устанавливается в значение, которое БОЛЕЕ ЧЕМ количество символов в одной строке. Вы можете использовать 'wrap_content', если вы выравниваете конец TextView и начинаете с любого другого вида (ов).

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