2012-06-14 67 views
5

如何將Android截斷的文本轉化爲省略號?如何在TextView中獲取橢圓化文本

我有一個TextView:

<TextView 
    android:layout_width="120dp" 
    android:layout_height="wrap_content" 
    android:ellipsize="end" 
    android:singleLine="true" 
    android:text="Um longo texto aqui de exemplo" /> 

在設備上這個TextView的是這個樣子:

"Um longo texto a..."

如何獲取文本的休息嗎?

我在尋找類似getRestOfTruncate()的東西,它會返回「qui de exemplo」。 。

+0

我定你的問題的標題和正文。我希望我能爲你解答,但我認爲沒有辦法做到這一點。這裏的用例是什麼? –

+0

謝謝@AustynMahoney,或許應該做些什麼來完成它,否則,我會建立一些東西,問題是它會困難得多,但是如果我在這裏發佈 – ademar111190

+1

使用'android:text =「@ string/full_text在xml佈局中使用'',並在需要時使用java代碼中的'getString(R.string.full_text)'。 – yorkw

回答

5
String text = (String) textView.getText().subSequence(textView.getLayout().getEllipsisStart(0), textView.getText().length()); 
+0

工作完美,但我需要在postRunnable中插入你的代碼,因爲首先textview必須設計,在finishi我做這個:new Handler()。postDelayed(可以用你的代碼運行,1 milissegundo); – ademar111190

+2

這隻適用於我有'android:singleLine =「true」'。如果我將它設置爲「false」並將'android:maxLines'設置爲除'以外的其他數字,那麼此方法總是返回整個文本,就好像它完全沒有被橢圓化一樣。 –

0

使用textView.getLayout()getEllipsisStart(0)只有工作,如果機器人:單線= 「真」

這裏是一個解決方案,如果機器人,將工作:MAXLINES設置:

public static String getEllipsisText(TextView textView) { 
    // test that we have a textview and it has text 
    if (textView==null || TextUtils.isEmpty(textView.getText())) return null; 
    Layout l = textView.getLayout(); 
    if (l!=null) { 
     // find the last visible position 
     int end = l.getLineEnd(textView.getMaxLines()-1); 
     // get only the text after that position 
     return textView.getText().toString().substring(end); 
    } 

    return null; 
} 

請記住:在視圖已經可見之後,它會起作用。

用法:

​​