wake-up-neo.net

Beenden Sie TextView mit 3 Punkten mit maxLength

Ich habe in meinem Layout eine Textansicht, die in layout_width wrap_content ist. Es ist auf maximal 15 Zeichen begrenzt, daher verwende ich maxLength.

Ich muss dieses TextView mit 3 Punkten beenden (...) und es passiert nur, wenn ich layout_width eine feste Größe mit dp gebe, etwas, das ich nicht machen möchte.

Ich weiß, dass es möglich ist, dies durch Code und die Zeichenfolge nach dem 15. Zeichen zu schneiden und dann die 3 Punkte hinzuzufügen, aber ich bevorzuge die Verwendung von XML.

Haben Sie eine Idee, wie Sie den Text mit 3 Punkten beenden und wrap_content belassen?

<TextView
        Android:id="@+id/inbox_contactName"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:lines="1"
        Android:maxLines="1"
        Android:ellipsize="end"
        Android:singleLine="true"
        Android:maxLength="15"
        Android:textColor="#0670b4"
        Android:textSize="16sp" />
45
Yaniv

Dies löst Ihr Problem, verwenden Sie ellipsize -Eigenschaft in Ihrem XML-Code.

Android:ellipsize="end" <!-- This makes the magic ... thing -->
Android:maxEms="15" <!-- Limit of the Text -->
Android:singleLine="true" <!-- In case if you want everything in one line -->

Edit: singleLine ist veraltet . Verwenden Sie stattdessen maxlines="1".

61
Kirk

Ich stelle fest (aus Kommentar), dass @Yaniv es bereits mit Code gelöst hat - aber dies ist der richtige Weg (mit XML). Kann anderen Benutzern helfen, die hier landen. Der Trick ist, sowohl Toleftof als auch Torightof zu verwenden.

<RelativeLayout>
...
 <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:singleLine="true"
        Android:layout_toRightOf="@id/some_element1"
        Android:layout_toLeftOf="@id/some_element2"/>
...
<RelativeLayout>
17
Ravi

Sie können nicht maxLength und Ellipsize verwenden, obwohl Sie Maximum EMS definieren können, siehe das folgende Beispiel 

<TextView
        Android:id="@+id/tv_hist_source_lang"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:ellipsize="end"
        Android:maxEms="8"
        Android:maxLines="1"
        Android:text="TextView"
        Android:textAppearance="?android:attr/textAppearanceMedium" />

It looks like this

11
AZ_

Sie können verwenden 

Android:maxWidth="100dp"
Android:maxLines="1"
Android:ellipsize="end"

Nur das funktioniert für mich.

5
Zhou Hongbo

verwenden Sie diesen Android:ellipsize="end"

5
Mahmoud Hashim

Eine der einfachsten Möglichkeiten ist das Hinzufügen von Right Padding + Ellipsize.

<TextView
            Android:id="@+id/txtvw_contentcell_subhead"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:text="Polem sampler, Lorem Ipsum golep tolem burop yemit noski"
            Android:ellipsize="end"
            Android:maxLines="1"
            Android:textColor="@color/caption_black_color"
            Android:textSize="@dimen/caption_size"
            Android:paddingRight="40dp"/>

Hier ist ein Beispiel für Untertiteltext mit Zeichenbeschränkung .  enter image description here

4
Enzokie

Sehr wichtig: ellipsize = "end" funktioniert nur, wenn für maxLength ein Wert festgelegt ist, der mehr als die Anzahl der Zeichen in einer Zeile ist . Sie können wrap_content verwenden, wenn Sie das Ende der TextView ausrichten und mit einem beliebigen Zeichen beginnen Weitere Ansichten).

0

Sie können einfach die Variable String ändern, wenn ihre Länge über 20 liegt, um die Ellipsize hinzuzufügen. 

0
Horatio

Ich musste das mit Radio Button machen und wollte die Größe auf eine Zeile beschränken. Bei der Verwendung von Android:singleline="true" verschwand der Kontrollkreis des Optionsfelds. Hier ist der Code, der endlich funktioniert hat:

Android:ellipsize="end"
Android:maxLines="1"

Es ist nicht nötig, die Ems einzustellen. Dies wird wahrscheinlich auch in TextView und anderen UI-Komponenten funktionieren. Hoffe das hilft jemandem.

0
Micer