Android, Как ограничить ширину TextView (и добавить три точки в конце текста)?

У меня есть TextView который я хочу ограничить его символами. На самом деле, я могу это сделать, но то, что я ищу, – это добавить три точки (…) в конец строки. Этот текст показывает, что текст продолжается. Это мой XML, но нет точек, хотя это ограничивает мой текст.

 <TextView android:id = "@+id/tvFixture" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_toLeftOf = "@id/ivFixture_Guest" android:text = "@string/test_06" android:lines = "1" android:ems = "3" android:gravity = "right" style = "@style/simpletopic.black" android:ellipsize="end"/> 

Solutions Collecting From Web of "Android, Как ограничить ширину TextView (и добавить три точки в конце текста)?"

Запрещены:

Добавьте еще одно свойство android:singleLine="true" в текстовом виде

Обновлено:

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

Следующее – это то, что я узнал, играя с различными вариантами для форсирования TextView в одну строку (с тремя точками и без них).

Введите описание изображения здесь

андроид: MAXLINES = "1"

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:text="one two three four five six seven eight nine ten" /> 

Это просто принуждает текст к одной строке. Любой дополнительный текст скрыт.

Связанный:

  • андроид: MaxLines
  • Android: singleLine (обратите внимание на это )
  • андроид: линии

ellipsize = "конец"

 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:ellipsize="end" android:text="one two three four five six seven eight nine ten" /> 

Это сокращает текст, который не подходит, но позволяет пользователям знать, что текст был усечен добавлением многоточия (три точки).

Связанный:

  • Ellipsize = "start" (… aaabbbccc)
  • Ellipsize = "middle" (aaa … ccc)
  • Android: Ellipsise, смысл опций

ellipsize = "бегущая строка"

 <TextView android:id="@+id/MarqueeText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:text="one two three four five six seven eight nine ten" /> 

Это позволяет автоматически прокручивать текст через TextView. Обратите внимание, что иногда его необходимо установить в коде:

 textView.setSelected(true); 

Предположительно android:maxLines="1" и android:singleLine="true" должны делать в основном одно и то же, и поскольку singleLine, по- видимому, не рекомендуется, я бы предпочел не использовать его, но когда я его вынимаю, область выделения больше не прокручивается , maxLines не maxLines вывод maxLines не влияет на него.

Связанный:

  • Текст выделения в Android

HorizontalScrollView с прокруткойHorizontally

 <HorizontalScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/horizontalScrollView"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="1" android:scrollHorizontally="true" android:text="one two three four five six seven eight nine ten" /> </HorizontalScrollView> 

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

Попробуйте это свойство TextView в вашем файле макета.

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

Полагаю, вы хотите ограничить ширину одной строкой, а не ограничивать ее символом? Так как singleLine устарел, вы можете попробовать использовать следующее:

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

например. вы можете использовать

 android:maxLength="13" 

Это ограничит длину texview до 13, но проблема в том, что если вы попытаетесь добавить 3 точки (…), она не отобразит ее, так как она будет частью длины текста.

  String userName; if (data.length() >= 13) { userName = data.substring(0, 13)+ "..."; } else { userName = data; } textView.setText(userName); 

Кроме этого вы должны использовать

  android:maxLines="1" 

Вы можете ограничить количество символов вашего текста и добавить (…) после текста. Предположим, вам нужно показать только 5 букв, а затем вам нужно показать (…), просто выполните следующие действия:

 String YourString = "abcdefghijk"; if(YourString.length()>5){ YourString = YourString.substring(0,4)+"..."; your_text_view.setText(YourString); }else{ your_text_view.setText(YourString); //Dont do any change } 

Немного взломать ^ _ ^. Хотя это не очень хорошее решение. Но работа, которая работала для меня: D

EDIT: я добавил чек на меньший персонаж в соответствии с вашим ограниченным номером. Символов.

Вы можете написать эту строку в xml, где вы берете textview :

 android:singleLine="true" 

код:

 TextView your_text_view = (TextView) findViewById(R.id.your_id_textview); your_text_view.setEllipsize(TextUtils.TruncateAt.END); 

XML:

 android:maxLines = "5" 

например

В Евангелии от Матфея 13 ученики спросили Иисуса, почему Он говорил с толпами в притчах. Он ответил: «Дано вам знать тайны Царства Небесного, но им не дано.

Результат. В Евангелии от Матфея 13 ученики спросили Иисуса, почему Он говорил с толпами в притчах. Он ответил: «Вам было дано знать …

Я получил желаемый результат, используя

 android:maxLines="2" android:minLines="2" android:ellipsize="end" 

Трюк задан maxLines и minLines для одного и того же значения … и не просто android: lines = "2", не делает этого трюка. Также вы избегаете любых устаревших атрибутов.

Чтобы работать с атрибутом android: ellipsize , вам нужно ограничить ширину макета TextView , чтобы текст был вне границ из вида TextView.

Итак, атрибут android: layout_width играет здесь ключевую роль, задайте его соответствующим образом.

Одним из примеров может быть:

 <TextView android:layout_width="120dp" android:layout_height="wrap_content" android:ellipsize="end" android:text="This is a very long text to be displayed" android:textSize="12sp" android:maxLines="1" /> 

Теперь, если текст в android: text = «Это очень длинный текст для отображения» выходит из поля зрения TextView с андроидом: layout_width = «120dp» , android: ellipsize = «end» усекает текст и Место … (3 точки) после этого. Т.е. Это очень длинный … будет отображаться в TextView.

Я думаю, вы даете высоту и ширину текста. Тогда ваше решение будет работать.

Вам нужно добавить следующие строки в свой макет для текстового просмотра

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

Надеюсь, что это работает для вас.

Подход @ Ажаршаих работает отлично.

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

Но я понимаю, что TextView будет усечен словом (по умолчанию). Покажите, есть ли у нас текст:

Test long_line_without_any_space_abcdefgh

TextView отобразит:

контрольная работа…

И я нашел решение для решения этой проблемы, заменив пробелы символом пробела unicode без прерывания, он превращает TextView в символы вместо слов:

 yourString.replace(" ", "\u00A0"); 

Результат:

Test long_line_without_any_space_abc …

Вы просто меняете

андроид: layout_width = "wrap_content"

Используйте эту строку ниже

андроид: layout_width = "match_parent"

 <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:layout_toRightOf="@+id/visitBox" android:orientation="vertical" > <TextView android:id="@+id/txvrequestTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:text="Abcdefghighiklmnon" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="@color/orange_color" /> </LinearLayout> 

Добавьте эти две строки в текст

 android:ellipsize="end" android:singleLine="true"