Могу ли я ограничить количество символов TextView? - PullRequest
65 голосов
/ 05 февраля 2012

Теперь у меня есть ListView элементов TextView. каждый элемент TextView отображает текст (длина текста варьируется от 12 слов до 100+). Я хочу, чтобы эти TextViews отображали часть текста (скажем, 20 слов или примерно 170 символов).

Как ограничить TextView фиксированным количеством символов?

Ответы [ 7 ]

145 голосов
/ 05 февраля 2012

Вот пример.Я ограничиваю размер атрибутом maxLength, ограничив его одной строкой с атрибутом maxLines, затем использую ellipsize = end, чтобы автоматически добавлять «...» в конец любой обрезанной строки.

<TextView 
    android:id="@+id/secondLineTextView" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:maxLines="1" 
    android:maxLength="10" 
    android:ellipsize="end"/>
6 голосов
/ 27 сентября 2014

Если вас не интересуют XML-решения, возможно, вы можете сделать это:

String s="Hello world";
Textview someTextView;
someTextView.setText(getSafeSubstring(s, 5));
//the text of someTextView will be Hello

...

public String getSafeSubstring(String s, int maxLength){
  if(!TextUtils.isEmpty(s)){
    if(s.length() >= maxLength){
      return s.substring(0, maxLength);
    }
  }
  return s;
}
6 голосов
/ 27 сентября 2014

Используйте приведенный ниже код в TextView

 android:maxLength="65"

Наслаждайтесь ...

2 голосов
/ 30 июля 2018

Я сделал это с помощью атрибута maxEms.

 <TextView
    android:ellipsize="end"
    android:maxEms="10"/>
2 голосов
/ 05 февраля 2012

Вы можете использовать метод setEllipsize класса TextView http://developer.android.com/reference/android/widget/TextView.html#setEllipsize(android.text.TextUtils.TruncateAt)

С константами класса TextUtil для добавления точек приостановки http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html

0 голосов
/ 28 марта 2017

Как уже упоминалось в https://stackoverflow.com/a/6165470/1818089 & https://stackoverflow.com/a/6239007/1818089, с использованием

android:minEms="2"

должно быть достаточно для достижения цели, указанной выше.

0 голосов
/ 05 февраля 2012

вы можете расширить класс TextView и переписать функцию setText ().В этой функции вы проверяете длину текста или длину слова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...