2011-06-28 18 views
5

TextViewの最後の3文字を '...'で置き換える方法があるのだろうかと疑問に思っていましたが、現在のテキストがTextViewをオーバーフローしている場合のみです。 TextViewを1行に制限する必要がありますが、テキストが長すぎる場合があります。テキストが表示されている長さよりも長いことを示すために、最後に '...'を表示したい場合があります。Android TextViewのテキストオーバーフローインジケータ?

おかげ

答えて

16

はい。 http://developer.android.com/reference/android/widget/TextView.html#attr_android:ellipsize を使用して、 "..."の表示を構成できます。

+0

うわー、私はこれについて知りませんでした。驚くばかり! –

+0

これは、切り取られている単語が途中で切り取られていないことを確認していませんか?最後の3文字を '...'で置き換えるにはどうすればいいですか? – Bryan

+1

max行を1に設定し、これをオプションENDに設定すると、探しているものがあると思います。代替操作は、フォントの幅/高さと文字数に基づいて非常に扱いにくく、基本的にレイアウトされたテキストの長さを決定し、切り捨てを計算する必要があります。私は本当にこのオプションとレイアウトの重力を試してみるべきだと思って、ウサギの穴を掘り下げる前に実行可能な解決策が見つかるかどうか確認してください。 –

0

はい、これは切り捨てと呼ばれる一般的な作業です。あなたが収まる(-3 3つの期間について)考える最大の文字を見つける必要があるし、このような何かをするだろう:

int MAX_CHARS = 55; // for example 
TextView tv = (TextView) findViewById(R.id.your_text_view_id); 
if(tv.getText().toString().length >= MAX_CHARS){ 
    tv.setText(tv.getText().toString().substring(0,MAX_CHARS) + "..."); 
} 

一部の文字を覚えていたフォントによっては、他よりも広くなっているので、あなたは可能性がありますMAX_CHARSの内容を調べるときに大文字のすべての文字を入力してみてください。 (私の経験では一般的に広い文字の1つ)

+0

私は最初に@ニックキャンプオンの方法を試してみると、それがあなたのために働いていないなら、上記のようなことをすることができます。 –

+0

アンドロイド:ellipsize = "end"があなたのために行います。 –

+0

@ romain-guyあなたは今夜あなたのmeetupのために準備する必要があります、私をdownvotingしないでください;) –