如何同时设置TextView的maxLines和ellipsize

时间:2010-05-26 00:22:25

标签: android

我想限制我的文本视图最多包含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行的文本视图,并在截断时添加“...”?

谢谢。

6 个答案:

答案 0 :(得分:52)

以编程方式,您可以使用:

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

答案 1 :(得分: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);
            }

        }
    });

答案 2 :(得分:6)

有同样的问题android ellipsize multiline textview这是已知的错误,已经很老了,还没有修复:(

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

答案 3 :(得分:5)

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

<TextView
  android:ellipsize="end"
  android:inputType="none"
  android:maxLines="2"

答案 4 :(得分:0)

当我将TextView高度设置为常量值(如50dp)时,它对我来说很好。

答案 5 :(得分:0)

<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"