J'ai une TextView
que je veux limiter les caractères de celle-ci. En fait, je peux le faire, mais je cherche comment ajouter trois points (...) à la fin de la chaîne. Celui-ci montre que le texte a continué. Ceci est mon XML mais il n'y a pas de points bien que cela limite mon texte.
<TextView
Android:id = "@+id/tvFixture"
Android:layout_width = "wrap_content"
Android:layout_height = "wrap_content"
Android:layout_toLeftOf = "@id/ivFixture_Guest"
Android:text = "@string/test_06"
Android:lines = "1"
Android:ems = "3"
Android:gravity = "right"
style = "@style/simpletopic.black"
Android:ellipsize="end"/>
Obsolète:
Ajouter une propriété Android:singleLine="true"
de plus dans votre Textview
Mis à jour:
Android:ellipsize="end"
Android:maxLines="1"
Ce qui suit est ce que j’ai appris en jouant avec diverses options permettant de forcer un TextView
à une seule ligne (avec et sans les trois points).
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:text="one two three four five six seven eight nine ten" />
Cela force simplement le texte à une ligne. Tout texte supplémentaire est caché.
En relation:
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:ellipsize="end"
Android:text="one two three four five six seven eight nine ten" />
Cela coupe le texte qui ne rentre pas, mais permet aux utilisateurs de savoir que le texte a été tronqué en ajoutant un Ellipsis (les trois points).
En relation:
<TextView
Android:id="@+id/MarqueeText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:singleLine="true"
Android:ellipsize="Marquee"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:text="one two three four five six seven eight nine ten" />
Cela fait défiler le texte automatiquement dans TextView. Notez que parfois il doit être défini dans le code:
textView.setSelected(true);
Soi-disant, Android:maxLines="1"
et Android:singleLine="true"
devraient faire essentiellement la même chose et puisque singleLine est apparemment obsolète je préférerais ne pas l'utiliser, mais lorsque je le retire, le Marquee ne défile plus. Prendre maxLines
n'affecte pas cela, cependant.
En relation:
<HorizontalScrollView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/horizontalScrollView">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:scrollHorizontally="true"
Android:text="one two three four five six seven eight nine ten" />
</HorizontalScrollView>
Cela permet à l'utilisateur de faire défiler manuellement pour voir toute la ligne de texte.
Essayez cette propriété de TextView dans votre fichier de mise en page.
Android:ellipsize="end"
Android:maxLines="1"
Je suppose que vous voulez limiter la largeur à une ligne et non la limiter par caractère? Puisque singleLine
est obsolète, vous pouvez essayer d’utiliser les éléments suivants ensemble:
Android:maxLines="1"
Android:scrollHorizontally="true"
Android:ellipsize="end"
par exemple. vous pouvez utiliser
Android:maxLength="13"
cela limitera la longueur de texview à 13 mais le problème est que si vous essayez d'ajouter 3 points (...), il ne l'affichera pas, car il fera partie de la longueur de textview.
String userName;
if (data.length() >= 13) {
userName = data.substring(0, 13)+ "...";
} else {
userName = data;
}
textView.setText(userName);
en dehors de cela, vous devez utiliser
Android:maxLines="1"
J'ai obtenu le résultat souhaité en utilisant
Android:maxLines="2"
Android:minLines="2"
Android:ellipsize="end"
L'astuce consiste à définir maxLines et minLines sur la même valeur ... et pas seulement Android: lines = "2", ne faites pas l'affaire. En outre, vous évitez tous les attributs obsolètes.
code:
TextView your_text_view = (TextView) findViewById(R.id.your_id_textview);
your_text_view.setEllipsize(TextUtils.TruncateAt.END);
xml:
Android:maxLines = "5"
par exemple.
Dans Matthieu 13, les disciples ont demandé à Jésus pourquoi il avait parlé à la foule en paraboles. Il répondit: "Il vous a été donné de connaître les mystères du royaume des cieux, mais cela ne leur a pas été donné.
Sortie: Dans Matthieu 13, les disciples ont demandé à Jésus pourquoi il avait parlé à la foule en paraboles. Il a répondu: "Il vous a été donné de savoir ...
J'utilise Horizonal Recyclerview.
1) Ici, dans CardView, TextView est déformé verticalement lorsqu’on utilise
Android:ellipsize="end"
Android:maxLines="1"
Vérifiez les caractères gras TextViews Wyman Group, Jaskolski ...
2) Mais quand j’utilisais singleLine avec ellipsize -
Android:ellipsize="end"
Android:singleLine="true"
Vérifiez les caractères gras TextViews Wyman Group, Jaskolski ...
La 2ème solution a fonctionné correctement pour moi (avec singleLine). Aussi, j'ai testé dans la version OS: 4.1 et supérieur (jusqu'à 8.0), ça fonctionne très bien, sans aucun crash.
Vous pouvez limiter le nombre de caractères de votre texte et ajouter (...) après le texte. Supposons que vous n’ayez besoin d’afficher que 5 lettres, puis (...), procédez comme suit:
String YourString = "abcdefghijk";
if(YourString.length()>5){
YourString = YourString.substring(0,4)+"...";
your_text_view.setText(YourString);
}else{
your_text_view.setText(YourString); //Dont do any change
}
un petit bidouillage ^ _ ^. Bien que ce ne soit pas une bonne solution. Mais un travail qui a fonctionné pour moi: D
EDIT: J'ai ajouté check pour moins de caractère selon votre nombre limité. de caractères.
Afin de travailler avec le Android: ellipsize attribut, vous devez limiter la largeur de la présentation du TextView, de sorte que le text soit hors de portée de TextView. .
Ainsi, Android: layout_width attribut joue un rôle clé ici, définissez-le en conséquence.
Un exemple peut être:
<TextView
Android:layout_width="120dp"
Android:layout_height="wrap_content"
Android:ellipsize="end"
Android:text="This is a very long text to be displayed"
Android:textSize="12sp"
Android:maxLines="1"
/>
Maintenant, voici si text dans Android: text = "Ceci est un très long texte à afficher" n'est pas visible de TextView avec un Android: layout_width = "120dp" , Android: ellipsize = "end" tronquera le texte et placera ... (3 points) après. c'est-à-direCeci est très long ...sera affiché dans le TextView.
Vous devez ajouter les lignes suivantes dans votre mise en page pour la visualisation de texte
Android:maxLines="1"
Android:ellipsize="end"
Android:singleLine="true"
J'espère que cela fonctionne pour toi.
Je pense que vous donnez une hauteur et une largeur fixes à la vue du texte. Ensuite, votre solution fonctionnera.
vous pouvez écrire cette ligne au format xml où vous prenez la textview
:
Android:singleLine="true"
L'approche de @AzharShaikh fonctionne bien.
Android:ellipsize="end"
Android:maxLines="1"
Mais je réalise qu’un problème est que TextView sera tronqué par Word (par défaut). Montrer si nous avons un texte comme:
test long_line_without_any_space_abcdefgh
le TextView affichera:
test ...
Et j'ai trouvé une solution pour gérer ce problème, remplacer les espaces par le caractère unicode no-space space, cela permet à TextView d'envelopper des caractères au lieu de mots:
yourString.replace(" ", "\u00A0");
Le résultat:
test long_line_without_any_space_abc ...
<TextView
Android:id="@+id/product_description"
Android:layout_width="165dp"
Android:layout_height="wrap_content"
Android:layout_marginTop="2dp"
Android:paddingLeft="12dp"
Android:paddingRight="12dp"
Android:text="Pack of 4 summer printed pajama"
Android:textColor="#d2131c"
Android:textSize="12sp"
Android:maxLines="2"
Android:ellipsize="end"/>
Ajouter ces deux lignes dans votre texte
Android:ellipsize="end"
Android:singleLine="true"
vous pouvez le faire par xml
:
<TextView
Android:id="@+id/textview"
Android:maxLines="1" // or any number of lines you want
Android:ellipsize="end"
/>
Utilisation
Android:singleLine="true"
Android:maxLines="1"
app:layout_constrainedWidth="true"
Voici comment se présente ma TextView
complète:
<TextView
Android:id="@+id/message_title"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="5dp"
Android:maxLines="1"
Android:singleLine="true"
Android:text="NAME PLACEHOLDER MORE Text"
Android:textColor="@Android:color/black"
Android:textSize="16sp"
Android:textStyle="bold"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/message_check_sign"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/img_chat_contact"
app:layout_constraintTop_toTopOf="@id/img_chat_contact" />
Vous venez de changer
Android: layout_width = "wrap_content"
utiliser cette ligne ci-dessous
Android: layout_width = "match_parent"
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerVertical="true"
Android:layout_marginLeft="10dp"
Android:layout_marginTop="10dp"
Android:layout_toRightOf="@+id/visitBox"
Android:orientation="vertical" >
<TextView
Android:id="@+id/txvrequestTitle"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:singleLine="true"
Android:text="Abcdefghighiklmnon"
Android:textAppearance="?android:attr/textAppearanceLarge"
Android:textColor="@color/orange_color" />
</LinearLayout>