2011-11-10 9 views
24

最後に省略したいTextViewをプログラムで作成しています。省略記号を含むTextViewをプログラムで作成する

擬似コード:

tv.setEllipsize(TextUtils.TruncateAt.END); 
    tv.setHorizontallyScrolling(false); 
    tv.setSingleLine(); 

上記作品GREAT。

tv.setEllipsize(TextUtils.TruncateAt.END); 
    tv.setHorizontallyScrolling(false); 
    tv.setMaxLines(1); 

これは機能しません。これはバグですか? maxLines、特にmaxLineを1に指定すると、最後に楕円にテキストを取得できない理由は分かりませんが、setSingleLineは問題ありません。

答えて

45

setSingleLine()またはsetSingleLine(true)は、TextViewの高さをより多くの行に変更できないようにし、TextViewで改行を無視します(文字列の\nの文字列)。

setMaxLines(int n)は、改行で区切られたTextViewに表示されるStringの最初のn行を表示します。文字列は、「私の最初の行の\ nと私の二行目の\ nと三つの」

  • setSingleLine()なりましょうたとえば

    は、TextViewに表示することができます「私の最初の行との私の..」表示以来、幅は明らかにこのサンプルには影響しません
  • setMaxLines(3)を超え、「私の最初の行」で
  • setMaxLines(1)結果、「私の最初の行」でと言っ線の下に
  • setMaxLines(2)結果「と私の二行目」されますstr ing。

更新:これは "切り捨てとsetDoubleLine" のために働く必要があります。

// optional: string.replace("\n",""); or string.replace("\n"," "); 
tv.setSingleLine(false); 
tv.setEllipsize(TextUtils.TruncateAt.END); 
int n = 2; // the exact number of lines you want to display 
tv.setLines(n); 
+1

恐ろしいです。最後に2行でまだ楕円形のTextViewを持つことは可能ですか?つまり、setDoubleLine()など?これは私がmaxLineを動作させることを想像したものです。私の高さと幅の価値はdip_valueに設定され、match_parentでは設定されません。 – sgarman

+0

@AndreyButov編集を提案してくれてありがとう、私は眠っていなければ受け入れていただろう。私は今あなたの提案に従って投稿を修正しました。再度、感謝します。 – stefan

関連する問題