2010-05-26 53 views
45

我想限制我的文本視圖,具有最大的5條線路設定一個TextView的MAXLINES和ellipsize,所以我所做的:如何在同一時間

<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行最大行的文本視圖添加'...'當它被截斷?

謝謝。

+5

你知道了嗎?也許你可以在下面發佈你的答案,以供其他用戶參考 – HXCaine 2010-10-02 17:42:56

+1

嘗試刪除此行:android:ellipsize =「...」 – merrymenvn 2011-02-24 16:34:29

+0

對於我來說,當ellipsize被刪除時它確實有效。我使用'setVerticalFadingEdgeEnabled'和'setFadingEdgeLength'來代替'...'。 – Stan 2013-04-01 08:49:57

回答

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

     } 
    }); 
+1

這段代碼完全適合我! @邁克爾,如果它適合你,你應該將其標記爲答案。 – neevek 2012-11-06 04:36:42

+0

我收到一個問題。以下代碼的功能是什麼? ViewTreeObserver obs = tv_yourtext.getViewTreeObserver(); obs.removeGlobalOnLayoutListener(this); C我使用vto.removeGlobalOnLayoutListener(this)來代替?謝謝。 – RxRead 2013-11-08 08:06:39

8

你只需要這一行添加到您的TextView:

android:ellipsize="marquee" 
+1

簡短而明確的答案,謝謝! – 2016-12-23 23:48:12

+1

是的,這是工作謝謝.. – 2017-11-27 09:28:41

+0

不客氣! – 2017-12-01 16:41:26

47

Progrmatically,你可以使用:

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

這對我不起作用,它總是設置爲1行 – JPM 2016-10-17 20:59:39

+0

檢查你的xml文件。可能是你的TextView可以有android:maxLines =「1」。如果它是刪除它。 – Imeshke 2016-10-18 09:22:39

+2

對我來說,它不工作是Android的一個明確的錯誤。如果我使用treeObserver方法。 – JPM 2016-10-19 20:07:47

0

當我設置TextView的高度,以一個恆定的值(如50dp),它爲我工作得很好。