J'ai un TextView qui se trouve sur le côté gauche de l'écran et est défini avec gravité = "right" et il est défini avec SingleLine = "true".
Si par hasard le texte de cette vue devient trop long, je souhaite qu'il disparaisse tout simplement du côté gauche de la vue. Je pensais que la configuration ci-dessous ferait cela, mais ce qui se passe réellement, c'est que la longue chaîne disparaît complètement, vraisemblablement vers le bas et en dehors de la vue quelque part.
Comment créer une simple vue de texte contenant une seule ligne de texte et en conservant la mise en page, même en cas d'imprévu? ... ou même quelque chose de prévisible.
<TextView
Android:id="@+id/tempF"
Android:text="@string/tempF"
Android:layout_width="146dp"
Android:layout_height="wrap_content"
Android:textColor="#cccccc"
Android:textStyle="bold"
Android:textSize="92dp"
Android:fontFamily="serif"
Android:gravity="right"
Android:layout_marginTop="60dp"
Android:layout_gravity="top|left"
Android:singleLine="true"
/>
C'est le but de "ellipsize" - tronquer une partie de texte pour indiquer du texte supplémentaire.
Dans votre cas, vous devrez peut-être simplement ajouter quelque chose comme:
Android:ellipsize="end"
ou vous pourriez avoir besoin d'aller plus loin:
Ellipsize automatiquement une chaîne en Java
Ou regardez ceci:
Android ellipsize multiligne textview
L'idée derrière l'extension de la classe est que vous pouvez personnaliser le comportement de TextView lorsque le contenu du texte dépasse l'espace fourni. Par exemple, vous pouvez lui donner l’apparence qu’il «perd» en supprimant le rembourrage, etc. Un ellipsis est un indicateur couramment utilisé pour expliquer «il ya plus de texte que vous ne pouvez pas voir» - c’est à quoi il ressemblerait. :
C'est vraiment très long ...
(les 3 points sont les ellipses - votre texte va dans le sens contraire, mais il devrait quand même fonctionner)
Avec un TextView personnalisé, vous pouvez changer le "..." en rien ou autre chose que vous voulez (même une image, ce que j'ai fait).
Vous pouvez également sélectionner le texte:
Ajouter 2 propriétés au format xml
Android:singleLine="true"
Android:ellipsize="end"
Vous devriez jouer avec l'attribut ellipsize de TextView.Check ci-dessous:
<TextView
Android:id="@+id/tempF"
Android:text="@string/tempF"
Android:layout_width="146dp"
Android:layout_height="wrap_content"
Android:textColor="#cccccc"
Android:textStyle="bold"
Android:textSize="92dp"
Android:fontFamily="serif"
Android:gravity="right"
Android:layout_marginTop="60dp"
Android:layout_gravity="top|left"
Android:singleLine="true"
Android:ellipsize="end"
/>
<TextView
Android:id="@+id/tv_desc"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textColor="@color/colorGray"
Android:textSize="@dimen/_18dp"
Android:padding="@dimen/_2dp"
Android:singleLine="true"
Android:ellipsize="end"
Android:text="@string/desc"/>
<View
Android:layout_width="match_parent"
Android:layout_height="1dp"
Android:background="#000000" />
Ça marche.