Est-ce que quelqu'un sait comment envelopper du texte dans TextView sur la plate-forme Android. c'est-à-dire que si le texte dans Textview dépasse la longueur de l'écran, il doit être affiché sur la deuxième ligne.
J'ai recherché 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.
android:inputType="textPersonName"
. Apparemment, il avait été ajouté par l'outil de conception Android Studio. La suppression de cet attribut a résolu le problème! Il peut y avoir d'autres types d'entrée qui empêchent également l'encapsulation.Réponses:
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 le dernier élément aléatoire qui a rendu mon habillage TextView.
la source
match_parent
, ce qui n'est pas la même chose que d'agrandir la hauteur de TextView pour inclure les lignes supplémentaires.Disposition des contraintes
<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 est juste un exemple)android:ellipsize="end"
La largeur 0dp permet aux contraintes gauche / droite de déterminer la largeur de votre widget.
La définition de contraintes gauche / droite définit la largeur réelle de votre widget, dans laquelle votre texte sera enveloppé.
Documents sur la mise en page des contraintes
la source
Pour le cas où le
TextView
est à l'intérieur de aTableLayout
, la solution est de définirandroid:shrinkColumns="1"
sur leTableLayout
. (Remplacez1
par le numéro de colonne dans laquelle se trouve TextView que vous souhaitez envelopper. (Indexé 0))AFAICT, aucun autre attribut n'est nécessaire sur le
TextView
.Pour les autres cas, voir les autres réponses ici.
FWIW, j'avais initialement réussi à travailler avec
<TextView android:id="@+id/inventory_text" android:layout_width="fill_parent" android:layout_weight="1" android:width="0dp"
mais cela a abouti à un espace vide supplémentaire au bas du dialogue dans lequel tout était.
la source
Vous devez utiliser 2 paramètres:
android:ellipsize="none"
: le texte n'est pas coupé sur la largeur de la vue du texteandroid:scrollHorizontally="false"
le texte s'enroule sur autant de lignes que nécessairela source
Il a trois valeurs constantes
<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" />
yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);
Pour plus d'informations, reportez-vous à cette BreakStrategy
la source
Cela devrait résoudre votre problème:
android:layout_weight="1"
.la source
match_parent
. Pas tout à fait la même chose que voulait OP.layout_weight="1"
résolu le problème. Cependant, mon TableRow qui contient le TextView avaitlayout_height
défini une valeur spécifique. Peut-être sera utile pour quelqu'unOK 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):. Réglez le mode de votre spinner (le parent) comme:
android:spinnerMode="dialog"
Définissez les propriétés de textview (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.
la source
En définissant
android:maxEms
une valeur donnée avecandroid:layout_weight="1"
, le TextView s'emballe une fois qu'il atteint la longueur donnée de l'ems.la source
Dans Android Studio 2.2.3, sous la
inputType
propriété, il y a une propriété appeléetextMultiLine
. La sélection de cette option a résolu un problème similaire pour moi. J'espère que cela aide.la source
Je travaillais juste sur un TextView dans une disposition à l'intérieur d'un RecyclerView. J'avais texte se couper, ex, pour
Read this message
, j'ai vu:Read this
. J'ai essayé de configurerandroid:maxLines="2"
le TextView, mais rien n'a changé. Cependant, aandroid:lines="2"
aboutiRead this
sur la première ligne etmessage
sur la 2ème.la source
J'ai eu le même problème. Suite au changement, cela a fonctionné -
android:layout_width="wrap_content"
Les points de suspension, maxLines ou layout_weight - tout cela ne faisait aucune différence. Remarque - La largeur du parent est également définie comme wrap_content.
la source
Tout ce que vous avez à faire est de définir la largeur de votre texte .
android: layout_width = "60dp"
vous pouvez changer la largeur de votre choix. Tapez simplement une longue phrase pour vérifier si cela fonctionne comme ça
android: text = "je veux faire partie des ingénieurs logiciels de classe mondiale"
la source
Essayez l'approche de @ Guykun
android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false"
Assurez-vous également que la largeur des parents n'est pas définie pour envelopper le contenu. C'est la chose qui me manquait.
la source
J'utilise Android 2.2 et ma vue de texte 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 simplement (indiquez simplement votre propre valeur dp). Cela sera utile si vous avez une image à droite du texte.
android:layout_marginRight="52dp"
la source
Assez étrange - j'ai créé mon TextView dans Code et il a été enveloppé - bien que je ne définisse rien d'autre que des éléments standard - mais voyez par 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 des paramètres, j'utilise un LinearLayout. La classe Label étend simplement TextView - ne rien faire à part définir la taille et la couleur de la police.
Lors de son exécution dans l'émulateur (niveau d'API 9), il enveloppe automatiquement le texte sur 3 lignes.
la source
LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
. Il est fort probable que le wrapping que vous considérez comme "automagique"Il suffit de définir
layout_with
une taille définie , lorsque le texte remplit la largeur maximale, il débordera sur la ligne suivante, provoquant un effet d'enroulement.<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"/>
la source
L'astuce est avec la largeur textView, essayez de lui faire un numéro dédié comme:
<TextView android:layout_width="300dp" android:layout_height="wrap_content"/>
J'ai essayé de nombreuses solutions sans aucun résultat, j'ai essayé:
android:ellipsize="none" android:scrollHorizontally="false"
la seule chose qui a déclenché l'option wrap est la largeur dédiée
la source
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>
la source