Как установить maxLines и многоточие TextView одновременно - PullRequest
51 голосов
/ 26 мая 2010

Я хочу ограничить текстовое представление максимум 5 строками, поэтому я сделал:

<TextView
    android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"  
    android:maxLines="5" />

Но когда я пытаюсь настроить его, чтобы добавить '...', когда текст обрезается, я добавляю android: ellipsize = "end". Я вижу ... но мой TextView имеет только максимальную строку 2 вместо 5.

Не могли бы вы подсказать, как сделать текстовое представление максимальной строкой из 5 и добавить '...', когда оно будет усечено?

Спасибо.

Ответы [ 7 ]

52 голосов
/ 23 апреля 2013

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

your_text_view.setEllipsize(TextUtils.TruncateAt.END);
your_text_view.setMaxLines(4);
your_text_view.setText("text");  
26 голосов
/ 08 августа 2012

попробуйте этот код ...

    final TextView tv_yourtext = (TextView)findViewById(R.id.text);

    tv_yourtext.setText("A really long text");
    ViewTreeObserver vto = tv_yourtext.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            ViewTreeObserver obs = tv_yourtext.getViewTreeObserver();
            obs.removeGlobalOnLayoutListener(this);
            if(tv_yourtext.getLineCount() > 6){
                Log.d("","Line["+tv_yourtext.getLineCount()+"]"+tv_yourtext.getText());
                int lineEndIndex = tv_yourtext.getLayout().getLineEnd(5);
                String text = tv_yourtext.getText().subSequence(0, lineEndIndex-3)+"...";
                tv_yourtext.setText(text);
                Log.d("","NewText:"+text);
            }

        }
    });
13 голосов
/ 29 марта 2013

Вам нужно только добавить эту строку в TextView:

android:ellipsize="marquee"
6 голосов
/ 16 февраля 2011

Есть такой же вопрос многострочное текстовое представление для Android с многоточием Это известная ошибка, довольно старая и еще не исправленная: (

кто-то опубликовал обходной путь http://code.google.com/p/android-textview-multiline-ellipse/ возможно, это поможет вам (или кому-то еще)

5 голосов
/ 19 марта 2018

Очевидно, вы должны указать inputType и установить в этом случае none в этом случае. Это должно выглядеть примерно так:

<TextView
  android:ellipsize="end"
  android:inputType="none"
  android:maxLines="2"
0 голосов
/ 13 февраля 2019
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"  
android:maxLines="5"
android:ellipsize="end" />

Работает для меня, убедитесь, что верхний контейнер TextView должен иметь высоту как

android:layout_height="wrap_content"
0 голосов
/ 10 февраля 2017

Когда я устанавливаю высоту TextView на постоянное значение (например, 50 dp), он прекрасно работает для меня.

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