J'ai un TextView dans ma mise en page qui est wrap_content dans layout_width. Il est limité à 15 caractères au maximum, donc j'utilise maxLength.
Je dois terminer cette TextView avec 3 points (...) et cela ne se produit que lorsque je donne à layout_width une taille fixe avec dp, ce que je ne veux pas faire.
Je sais qu'il est possible de coder et de couper la chaîne après le 15ème caractère, puis d'ajouter les 3 points, mais je préfère le faire en XML.
Une idée de comment terminer le texte avec 3 points et le laisser wrap_content?
<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" />
Ceci résoudra votre problème, utilisez la propriété ellipsize
dans votre code XML
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
est obsolète . Utilisez maxlines="1"
à la place.
Je suppose (d'après un commentaire) que @Yaniv l'a déjà résolu avec du code - mais c'est la bonne façon de le faire (avec XML). Peut aider les autres utilisateurs qui atterrissent ici. Astuce consiste à utiliser à la fois toleftof et / torightof.
<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>
Vous ne pouvez pas utiliser à la fois maxLength
et Ellipsize
bien que vous puissiez définir Maximum EMS
voir l'exemple ci-dessous
<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" />
Vous pouvez utiliser
Android:maxWidth="100dp"
Android:maxLines="1"
Android:ellipsize="end"
Seulement ça marche pour moi.
utiliser ce Android:ellipsize="end"
L’un des moyens les plus simples consiste à ajouter 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"/>
Voici un exemple de texte de sous-titre avec limite de caractères .
Très important: ellipsize = "end"
ne fonctionne que lorsque maxLength
est défini sur une valeur qui est supérieure à le nombre de caractères sur une ligne . Vous pouvez utiliser wrap_content
si vous alignez la fin de TextView et commencez à tout Autres vues).
Vous pouvez simplement modifier la String
lorsque sa longueur est supérieure à 20 pour ajouter l'ellipsize.
J'avais besoin de faire cela avec Radio Button et je voulais limiter la taille à une ligne. Lorsque j'ai utilisé Android:singleline="true"
, le cercle de vérification du bouton radio a disparu. Voici le code qui a finalement fonctionné:
Android:ellipsize="end"
Android:maxLines="1"
Il n'y a pas besoin de définir ems. Cela fonctionnera probablement aussi dans TextView et d'autres composants de l'interface utilisateur. J'espère que cela aide quelqu'un.