Est-ce que quelqu'un sait comment insérer du texte dans TextView sur une plate-forme Android? C'est-à-dire que si le texte dans textview dépasse la longueur de l'écran, il doit être affiché dans la deuxième ligne.
J'ai cherché et essayé ce qui suit:
Android:scrollHorizontally="false",
Android:inputType="textMultiLine",
Android:singleLine="false"
Mais aucun ne fonctionne ..
Quelqu'un peut-il suggérer comment puis-je le faire ... je suis relativement nouveau sur la plate-forme Android ..
Pour moi, ce problème ne s'est produit que sur Android <4.0.
La combinaison de paramètres que j'ai utilisée était:
Android:layout_weight="1"
Android:ellipsize="none"
Android:maxLines="100"
Android:scrollHorizontally="false"
Le nombre maxLines semblait être la dernière pièce aléatoire qui a enveloppé mon TextView.
Dans le cas où la TextView
est à l'intérieur d'une TableLayout
, la solution consiste à définir Android:shrinkColumns="1"
sur la TableLayout
. (Remplacez 1
par le numéro de colonne dans lequel se trouve TextView que vous voulez habiller. (Indexé 0))
AFAICT, aucun autre attribut n'est requis sur la variable TextView
.
Pour les autres cas, voir les autres réponses ici.
FWIW, je l’avais initialement eu à travailler en quelque sorte avec
<TextView
Android:id="@+id/inventory_text"
Android:layout_width="fill_parent"
Android:layout_weight="1"
Android:width="0dp"
mais cela a créé un espace vide supplémentaire au bas de la boîte de dialogue.
<TextView
Android:id="@+id/some_textview"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="@id/textview_above"
app:layout_constraintRight_toLeftOf="@id/button_to_right"/>
Android:maxLines="2"
pour empêcher l'expansion verticale (2 n'est qu'un exemple)Android:ellipsize="end"
0dp width permet aux contraintes gauche/droite de déterminer la largeur de votre widget.
La définition des contraintes gauche/droite définit la largeur réelle de votre widget, dans laquelle le texte sera renvoyé à la ligne.
Vous devez utiliser 2 paramètres:
Android:ellipsize="none"
: le texte n'est pas coupé sur la largeur de la vue texte
Android:scrollHorizontally="false"
le texte se termine sur autant de lignes que nécessaire
Cela devrait résoudre votre problème: Android:layout_weight="1"
.
OK les gars la vérité est quelque part au milieu parce que vous devez voir le problème du point de vue du parent et de l'enfant. La solution ci-dessous fonctionne UNIQUEMENT lorsque le mode Spinner = dialog
quelle que soit la version d'Android (pas de problème là-bas. Testé dans VD et DesireS avec Android => 2.2):
. Définissez le mode de votre spinner (le parent) comme:
Android:spinnerMode="dialog"
Définissez les propriétés de la vue texte (vue personnalisée enfant) sur:
Android:layout_weight="1"
Android:ellipsize="none"
Android:maxLines="100"
Android:scrollHorizontally="false"
J'espère que cela fonctionne pour vous aussi.
Dans Android Studio 2.2.3, sous la propriété inputType
, il existe une propriété appelée textMultiLine
. La sélection de cette option a réglé un problème similaire pour moi. J'espère que ça aide.
En définissant Android:maxEms
sur une valeur donnée en même temps que Android:layout_weight="1"
, le TextView sera renvoyé à la ligne une fois qu'il aura atteint la longueur donnée de la valeur em.
Je travaillais sur un TextView dans une mise en page dans un RecyclerView. J'avais un texte coupé, ex, pour Read this message
, j'ai vu: Read this
. J'ai essayé de régler Android:maxLines="2"
sur le TextView, mais rien n'a changé. Cependant, Android:lines="2"
a donné Read this
sur la première ligne et message
sur la 2e.
J'ai eu le même problème. Après le changement, ça a marché -
Android:layout_width="wrap_content"
Les symboles Ellipsis, maxLines ou layout_weight ne font pas de différence ..___ Remarque - La largeur du parent est également définie sur wrap_content.
Utilisez
app:breakStrategy="simple"
dansAppCompatTextView
, il contrôlera la disposition des paragraphes.
Il a trois valeurs constantes
Concevoir dans votre TextView xml
<Android.support.v7.widget.AppCompatTextView
Android:id="@+id/textquestion"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:gravity="center"
Android:scrollHorizontally="false"
Android:text="Your Question Display Hear....Your Question Display Hear....Your Question Display Hear....Your Question Display Hear...."
Android:textColor="@Android:color/black"
Android:textSize="20sp"
Android:textStyle="bold"
app:breakStrategy="simple" />
Si votre niveau minimum actuel d'api est de 23 ou plus, dans Codage
yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);
Pour plus de références, référez-vous BreakStrategy
Vous pouvez utiliser le redimensionnement automatique de la bibliothèque de support pour TextView
s, vérifiez ma réponse sur un thread similaire.
Vous devez ajouter votre TextView dans un ScrollView avec quelque chose comme ceci:
<ScrollView Android:id="@+id/SCROLL_VIEW"
Android:layout_height="150px"
Android:layout_width="fill_parent">
<TextView
Android:id="@+id/TEXT_VIEW"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" />
</ScrollView>
Tout ce que vous avez à faire est de définir votre largeur textview .
Android: layout_width = "60dp"
vous pouvez changer la largeur à votre choix. Il suffit de taper phrase longue pour vérifier si cela fonctionne comme ça
Android: text = "je veux être parmi les meilleurs ingénieurs en logiciel"
Essayez l'approche de @ Guykun et assurez-vous que la largeur des parents n'est pas configurée pour envelopper le contenu. C'est la chose qui me manquait.
Le moyen facile de faire cela:
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Il va envelopper le texte par défaut
Il suffit de définir layout_with
sur une taille définie. Lorsque le texte remplit la largeur maximale, il débordera à la ligne suivante, ce qui provoquera un effet d’enveloppe.
<TextView
Android:id="@+id/segmentText"
Android:layout_marginTop="10dp"
Android:layout_below="@+id/segmentHeader"
Android:text="You have the option to record in one go or segments(if you swap options
you will loose your current recordings)"
Android:layout_width="300dp"
Android:layout_height="wrap_content"/>
J'utilise Android 2.2 et ma vue textuelle passera automatiquement à la ligne suivante si elle dépasse l'écran.
Si vous souhaitez que le texte passe à la ligne suivante avant la fin de l'écran, ajoutez-y simplement (insérez simplement votre propre valeur dp). Cela sera utile si vous avez une image à droite du texte.
Android:layout_marginRight="52dp"
C'est assez étrange - j'ai créé ma TextView dans Code et elle est enveloppée - bien que je ne définisse rien d'autre que des éléments standard - mais voyez vous-même:
LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
childParams.setMargins(5, 5, 5, 5);
Label label = new Label(this);
label.setText("This is a testing label This is a testing label This is a testing label This is a testing labelThis is a testing label This is a testing label");
label.setLayoutParams(childParams);
Comme vous pouvez le voir dans la définition de params, j'utilise un LinearLayout. La classe Label étend simplement TextView - ne fait rien sauf la définition de la taille et de la couleur de la police.
Lors de son exécution dans l'émulateur (API niveau 9), le texte est automatiquement enroulé sur 3 lignes.