Подтвердить что ты не робот

Как установить maxLines и эллипсис TextView одновременно

Я хочу ограничить мое текстовое представление максимум 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 и добавить "...", когда он будет усечен?

Спасибо.

4b9b3361

Ответ 1

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

your_text_view.setEllipsize(TextUtils.TruncateAt.END);
your_text_view.setMaxLines(4);
your_text_view.setText("text");  

Ответ 2

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

    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);
            }

        }
    });

Ответ 3

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

android:ellipsize="marquee"

Ответ 5

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