2009-11-03 4 views
100

Wenn ein String länger als die TextView 's Breite ist, wird automatisch auf die nächste Zeile umgebrochen. Ich kann das vermeiden, indem ich android:singleLine (veraltet) oder android:inputType="text" setze. Was ich jetzt brauche, ist etwas, das die letzten 3 Zeichen meines String durch "..." ersetzt. Da ich keine Monospace-Schriftart verwende, wird dies immer anders sein, abhängig von den Buchstaben in meinem String. Also frage ich mich, wie Sie die letzten 3 Zeichen eines Strings am besten in einem TextView erhalten und ersetzen können. Vielleicht ist bereits etwas im Android-Framework implementiert, da dies ein häufiges Problem sein muss.Android: TextView wird automatisch abgeschnitten und ersetzt die letzten 3 Zeichen von String

Antwort

222

Sie sollten die „ellipsize“ Eigenschaft eines Textansicht verwenden können:

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

Sie auch zu Schwerewerte auf das Layout anwenden müssen; Ich habe manchmal "Auto-Stretching" Ansichten ohne sie gesehen.

+0

+1 - genau, was Benutzer zu rollen tun will er sich ohne – I82Much

+0

Perfect. Vielen Dank. Ich habe das vorher versucht, aber nicht funktioniert, weil ich android verwendet: inputType = "text" anstelle von android: singleLine = "true" (was veraltet sein soll). Aber jetzt bleibe ich bei android: singleLine = "true". Vielen Dank. – znq

+30

Es fügt immer noch nicht das "..." hinzu. Für mich ist diese Frage nicht vollständig beantwortet! Diese Antwort wird "shortlongword" zu "short" und nicht zu "short verylon ..." machen. Außerdem schlagen Sie vor, ein veraltetes Attribut zu verwenden. – OneWorld

28

Einen interessanten Work-A-Round für dieses Problem gefunden.

maxLines=1 
ellipsize=end 
scrollHorizontally=true 

Der Trick ist diese letzte Aussage über horizontales Scrollen .... überprüfen Sie es. Es funktioniert zumindest auf v2.2.

+7

Scheint zu arbeiten auf Android 4.0 aufhören – caw

+0

Interessant ... gut zu wissen. Danke Marco für das Heads-up. – BonanzaDriver

2

mit programmatisch

können Sie verwenden

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);