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" />
Ответы
Ответ 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
Поместите другое текстовое окно рядом с текущим текстом и установите его данные в "...". Вот и все.