如何同时设置TextView的maxLines和ellipsize

mic*_*ael 54 android

我想限制我的文本视图最多有5行,所以我做了:

<TextView
    android:id="@+id/text"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"  
    android:maxLines="5" />
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将其配置为在文本被截断时添加"..."时,我添加了android:ellipsize ="end".我确实看到了......但是我的TextView只有2的最大值,而不是5.

您能否建议我如何制作最大5行的文本视图,并在截断时添加"..."?

谢谢.

Ime*_*hke 52

在程序上,您可以使用:

your_text_view.setEllipsize(TextUtils.TruncateAt.END);
your_text_view.setMaxLines(4);
your_text_view.setText("text");  
Run Code Online (Sandbox Code Playgroud)

  • 对我而言,Android中没有工作是一个明确的错误.如果我使用treeObserver方法. (3认同)

小智 26

试试这个代码......

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

        }
    });
Run Code Online (Sandbox Code Playgroud)


Joh*_*tts 13

您只需要将此行添加到TextView:

android:ellipsize="marquee"
Run Code Online (Sandbox Code Playgroud)


Sep*_*X75 10

显然inputTypenone在这种情况下,您必须指定并将其设置为。它看起来应该像这样:

<TextView
  android:ellipsize="end"
  android:inputType="none"
  android:maxLines="2"
Run Code Online (Sandbox Code Playgroud)


Lop*_*ope 6

有同样的问题android ellipsize multiline textview这是已知的bug,相当古老,尚未修复:(

有人发布了解决方法http://code.google.com/p/android-textview-multiline-ellipse/也许它会帮助你(或其他人)