J'ai essayé d'obtenir ma boîte EditText à Word Wrap, mais ne semble pas pouvoir le faire.
J'ai traité des problèmes beaucoup plus complexes lors du développement d'applications Android, et cela semble être un processus simple.
Cependant, le problème persiste et j'ai une grande zone de texte qui ne me permet que de saisir du texte sur une seule ligne, en continuant tout droit, en défilant horizontalement lorsque je saisis du texte.
Voici le code XML de l'objet EditText de mon fichier de présentation.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
Android:id="@+id/myWidget48"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
xmlns:Android="http://schemas.Android.com/apk/res/Android"
>
<ScrollView
Android:id="@+id/myScrollView"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1"
>
<LinearLayout
Android:id="@+id/widget37"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical"
>
<EditText
Android:id="@+id/txtNotes"
Android:layout_width="300px"
Android:layout_height="120px"
Android:scrollbars="vertical"
Android:textSize="18sp"
Android:gravity="left"
Android:layout_marginTop="10dip"
Android:inputType="textCapSentences"
>
</EditText>
</LinearLayout>
</ScrollView>
</LinearLayout>
En plus de trouver la source du problème, j'ai trouvé la solution. Si Android:inputType
est utilisé, textMultiLine doit être utilisé pour activer la prise en charge multiligne. De plus, l’utilisation de inputType remplace le code Android:singleLine="false"
. Si vous utilisez inputType, alors, répétons-le, textMultiLine doit être utilisé ou l'objet EditText ne comportera qu'une seule ligne, sans le wrapping Word.
Edit: Merci Jacob Malliet pour nous avoir fourni de bons conseils à ce sujet. Il a suggéré de définir la propriété boolean scrollHorizontally sur false, 'Android:scrollHorizontally="false"'
.
Exemple de code XML:
<EditText
Android:id ="@+id/edtInput"
Android:layout_width ="0dip"
Android:layout_height ="wrap_content"
Android:layout_weight ="1"
Android:inputType="textCapSentences|textMultiLine"
Android:maxLines ="4"
Android:maxLength ="2000"
Android:hint ="@string/compose_hint"
Android:scrollHorizontally="false" />
Ok je l'ai compris, vous devez définir Android:scrollHorizontally="false"
pour votre EditText
dans votre xml. Je suis à peu près sûr que ça devrait marcher.
Supposons que vous souhaitiez simplement avoir une ligne au début, puis l'étendez à 5 lignes et que vous souhaitiez un maximum de 10 lignes.
<EditText
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/etMessageBox"
Android:layout_alignParentLeft="true"
Android:layout_centerVertical="true"
Android:autoLink="all"
Android:hint="@string/message_edit_text_hint"
Android:lines="5"
Android:minLines="1"
Android:gravity="top|left"
Android:maxLines="10"
Android:scrollbars="none"
Android:inputType="textMultiLine|textCapSentences"/>
En augmentant Android:lines
, vous pouvez définir le développement du nombre de lignes.
Je l'ai compris. La ligne,
Android:inputType="textCapSentences"
était le problème. Ajouter cette ligne à un objet EditText transformera cet objet en une seule ligne EditText et ne laissera pas les mots envelopper, ni ne permettra à un utilisateur d'appuyer sur 'Entrée' pour insérer un saut de ligne ou un retour à la ligne dans EditText.
vous devez ajouter l'attribut suivant à votre edittext.
Android:inputType="textMultiLine"
De même, si vous définissez la hauteur ou le nombre maximal de lignes d'edittext sur une valeur spécifique, le texte défilera lorsque vous aurez saisi beaucoup de caractères.
Le fait de placer l’ensemble de l’activité dans la vue par défilement et de placer le texte de montage suivant dans une présentation linéaire a fonctionné à merveille.
Le texte de montage défilerait verticalement en appuyant sur Entrée, coder comme suit
<EditText
Android:id="@+id/editText1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:ems="10"
Android:hint="Enter somehting"
Android:inputType="textMultiLine"
Android:maxLength="2000"
Android:maxLines="6"
Android:scrollHorizontally="false"
Android:scrollbars="vertical" >
Essayez ceci, changer la gravité en haut à gauche a fonctionné pour moi, avec le type de saisie textmultiline
<EditText
Android:layout_width="200dp"
Android:layout_height="match_parent"
Android:layout_gravity="center"
Android:background="@color/color_red"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:gravity="top|left"
Android:inputType="textMultiLine|textCapSentences"
Android:lines="10"
Android:maxWidth="200dp"
Android:maxLength="200"
Android:maxLines="10"
Android:singleLine="false"
Android:textColor="@Android:color/white"
Android:textSize="26sp" />
Définissez également la valeur largeur de la structure parent, (propriété Layout_width) . Par exemple layout_width = 250sp
sinon, EditText ou TextView ne se termine pas à la ligne suivante jusqu'à ce qu'il atteigne la fin de la frontière mobile. Alors définissez Layout_width
Pour ceux qui le font de manière pragmatique, vous voudrez peut-être examiner cette question Android EditText Multiline ne fonctionne pas comme il se doit pour vérifier que vous définissez correctement le type d'entrée. C'était mon problème