Android:TextViewは自動的に文字列の最後の3文字を切り捨てて置き換えます


131

a StringTextViewの幅より長い場合、自動的に次の行に折り返されます。を使用するandroid:singleLine(非推奨)か、を設定することで、これを回避できますandroid:inputType="text"。今必要なのは、私の最後の3文字Stringを「...」に置き換えるものです。モノスペースフォントを使用していないので、これは私ので使用されている文字によって常に異なりStringます。だから私は文字列の最後の3文字を取得してTextView置き換えるための最良の方法は何だろうと思っています。これは一般的な問題であるため、Androidフレームワークにはすでに何かが実装されている可能性があります。

回答:


290

テキストビューの「ellipsize」プロパティを使用できるはずです。

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

重力値もレイアウトに適用する必要があるかもしれません。私は時々それらなしで「自動ストレッチ」ビューを見てきました。


完璧です。ありがとう。以前試してみましたが、android:singleLine = "true"(廃止予定)の代わりにandroid:inputType = "text"を使用したため、機能しませんでした。しかし、今はandroid:singleLine = "true"を使用します。ミュシャグラシアス。
znq 2009年

44
それでも「...」は追加されません。私にとって、この質問は完全には答えられていません!この回答は、「short verylongword」を「short verylon ...」ではなく、単に「short」に変更します。さらに、非推奨の属性を使用することをお勧めします。
OneWorld

7
うまく機能しますが、singleLineは非推奨であるため、代わりにmaxLines = "1"を使用する必要があります。補足:ellipsizeは複数行でも機能します!
Torre Lasley、2016年

4
singleLineは非推奨です。maxLines = "1"を使用します。古い回答へのコメント
Ewoks

1
MaxLine = 1は、テキストビューを途中で切り捨てます。SingleLine = Trueは期待どおりに機能します。
ヘビ

33

この問題の興味深い回避策を見つけました。

maxLines=1
ellipsize=end
scrollHorizontally=true

トリックは、水平スクロールに関する最後のステートメントです....確認してください。少なくともv2.2で動作します。


興味深い…知っておくと良い。マルコにヘッドアップしてくれてありがとう。
BonanzaDriver 2012

4

プログラムでは、次のものを使用できます。

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.