2010-10-26 79 views
1

我有一個lsit視圖,我需要添加一些文本。在適配器 ,我需要追加......在最後,我用以下 當我給android在文本結尾添加'...'_EDIT

android:ellipsize="end" 

中唯一顯示2行 如:
asdnfsdfdsf asdfsdfasdf
sdfsd sdfsdf sdfsd廣告...

當我給

android:ellipsize="start" 

它是:
asdnfsdfdsf asdfsdfasdfd
... sdfsd sdfsdf sdfsd廣告

完整的代碼,我用:

<TextView android:layout_width="wrap_content" android:background="#016A7D" 

    android:layout_height="80dp" android:textColor="#000000" 

    android:maxLines="4"   

    android:id="@+id/list_report_desciption" 

    android:ellipsize="end" 

/> 和輸出我得到的是:

究竟會智慧的地球
長得什麼樣子? IT如何變化?一...

實際上它包含了超過6行
有我需要設置,這樣我需要得到3線
感謝任何事情

+0

也許80dp的佈局高度不是足夠3行文字。在那裏嘗試200dp的東西,看看是否有4或5條線,然後將它修剪到你想要的高度,以便有3條線。沒有完全優雅,所以我不會將它作爲答案發布。 – blindstuff 2010-10-26 12:18:38

+0

我也試過:-( – 2010-10-26 14:49:35

回答

0

沒有任何的工作之後,我:-(
我只是固定的長度,切串在長度和追加「...」。
現在,它爲我工作。

0

我一直在尋找對於這一點我自己一個簡單的解決方案,我結束了類似:

private String getTextWithMoreIndicator(TextView textView, String text) { 

    long maxVisibleChars = textView.getPaint().breakText(text, true, textView.getMeasuredWidth(), null); 

    if(maxVisibleChars < text.length()) { 
     text = text.substring(0, (int)maxVisibleChars -3) + "..."; 
    } 

    return text; 
} 
0

你接受的解決方案將不會在所有設備上正確縮放

原因:「a」的寬度小於「A」,因此,如果您根據某種大小(例如15個字母)截斷字符串並通過代碼添加「...」。您可能會看到預期結果。

現在來解決: -

解決方案:

解決方案#1: 以下3個屬性添加到您的TextView,你會得到你想要的:)

結果
<TextView 
    android:ellipsize="end" 
    android:lines="1" 
    android:scrollHorizontally="true" /> 

溶液#2: 另一個解決方法可能是,您可以決定選取文字(花式動畫從右向左移動文本)。爲此你需要在你的TextView XML以下屬性: -

<TextView 
    android:id="@+id/my_text_view" 
    android:ellipsize="marquee" 
    android:lines="1" 
    android:scrollHorizontally="true" 
    android:marqueeRepeatLimit="marquee_forever" /> 

然後在你的代碼,你需要通過ID來獲得的TextView及放入下面一行: -

TextView myTextView = (TextView) findViewById(R.id.my_text_view); 
myTextView.setSelected(true); 

####編輯: - ####

我想通了,我的解決辦法的Android版本低於2.3.x版本更高的工作,我們需要添加下面一行在我們的TextView XML: -

android:singleLine="true" 

儘管它已被棄用的屬性,但你必須添加此,否則字幕或「...」將無法正常工作。

希望這個答案:)