Comment autoriser le mode multi-lignes dans la vue EditText
d'Android?
Par défaut, tous les widgets EditText
de Android sont multilignes.
Voici un exemple de code:
<EditText
Android:inputType="textMultiLine" <!-- Multiline input -->
Android:lines="8" <!-- Total Lines prior display -->
Android:minLines="6" <!-- Minimum lines -->
Android:gravity="top|left" <!-- Cursor Position -->
Android:maxLines="10" <!-- Maximum Lines -->
Android:layout_height="wrap_content" <!-- Height determined by content -->
Android:layout_width="match_parent" <!-- Fill entire width -->
Android:scrollbars="vertical" <!-- Vertical Scroll Bar -->
/>
Vous trouverez peut-être mieux d'utiliser:
<EditText
...
Android:inputType="textMultiLine"
/>
Ceci est dû au fait que Android:singleLine
est obsolète.
Cela fonctionne pour moi, en fait, ces 2 attributs sont importants: inputType et lignes. De plus, vous aurez peut-être besoin d'une barre de défilement, le code ci-dessous montre comment en créer une:
<EditText
Android:id="@+id/addr_edittext"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:gravity="top|left"
Android:inputType="textEmailAddress|textMultiLine"
Android:lines="20"
Android:minLines="5"
Android:scrollHorizontally="false"
Android:scrollbars="vertical" />
Voici comment j'ai appliqué l'extrait de code ci-dessous et tout fonctionne correctement. J'espère que cela aiderait quelqu'un.
<EditText
Android:id="@+id/EditText02"
Android:gravity="top|left"
Android:inputType="textMultiLine"
Android:layout_height="wrap_content"
Android:layout_width="wrap_content"
Android:lines="5"
Android:scrollHorizontally="false"
/>
À votre santé! ...Merci.
Essayez ceci, ajoutez ces lignes à votre affichage de texte édité, je vais ajouter le mien. assurez-vous de bien comprendre
Android:overScrollMode="always"
Android:scrollbarStyle="insideInset"
Android:scrollbars="vertical"
<EditText
Android:inputType="textMultiLine"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/editText_newprom_description"
Android:padding="10dp"
Android:lines="5"
Android:overScrollMode="always"
Android:scrollbarStyle="insideInset"
Android:minLines="5"
Android:gravity="top|left"
Android:scrollbars="vertical"
Android:layout_marginBottom="20dp"/>
et dans votre classe Java, créez un clic sur le texte de ce texte édité comme suit, je vais ajouter le mien, des noms chane en fonction du vôtre.
EditText description;
description = (EditText)findViewById(R.id.editText_newprom_description);
description.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
view.getParent().requestDisallowInterceptTouchEvent(true);
switch (motionEvent.getAction() & MotionEvent.ACTION_MASK){
case MotionEvent.ACTION_UP:
view.getParent().requestDisallowInterceptTouchEvent(false);
break;
}
return false;
}
});
cela fonctionne bien pour moi
EditText possède la propriété singleLine . Vous pouvez définir dans le XML ou en appelant setSingleLine (false); http://developer.Android.com/reference/Android/widget/TextView.html#setSingleLine%28%29
Tous ces éléments sont agréables mais ne fonctionneront pas si vous avez votre edittext dans la vue de défilement du niveau supérieur :) L’exemple le plus courant est peut-être la vue "Paramètres" qui contient tellement d’éléments qu’ils dépassent la zone visible. Dans ce cas, vous les mettez tous en vue de défilement pour que les paramètres puissent défiler. Si vous avez besoin de texte d'édition défilant sur plusieurs lignes dans vos paramètres, son défilement ne fonctionnera pas.
<EditText
Android:id="@id/editText" //id of editText
Android:gravity="start" // Where to start Typing
Android:inputType="textMultiLine" // multiline
Android:imeOptions="actionDone" // Keyboard done button
Android:minLines="5" // Min Line of editText
Android:hint="@string/Enter Data" // Hint in editText
Android:layout_width="match_parent" //width editText
Android:layout_height="wrap_content" //height editText
/>
Pour désactiver le nombre de lignes précédemment assignées dans le thème, utilisez l'attribut xml: Android:lines="@null"
Android:inputType="textMultiLine"
Cette ligne de code fonctionne pour moi. Ajoutez ce code vous edittext dans votre fichier xml.
J'ai appris cela de http://www.pcsalt.com/Android/edittext-with-single-line-line-wrapping-and-done-action-in-Android/ , même si je ne le fais pas t comme le site moi-même. Si vous souhaitez utiliser plusieurs lignes MAIS conserver le bouton Entrée en tant que bouton de publication, définissez le "défilement horizontal" de la liste dans la valeur false.
Android:scrollHorizontally="false"
Si cela ne fonctionne pas en XML, le faire par programme fonctionne bizarrement.
listView.setHorizontallyScrolling(false);
<EditText
Android:hint="Address"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:inputType="textMultiLine|textNoSuggestions"
Android:id="@+id/edittxtAddress"
Android:layout_marginLeft="@dimen/textsize2"
Android:textColor="@Android:color/white"
Android:scrollbars="vertical"
Android:minLines="2"
Android:textStyle="normal" />
et dans Activity, pour supprimer "\ n" l'utilisateur doit appuyer sur nextline.
String editStr= edittxtAddress.getText().toString().trim();
MyString= editStr.replaceAll("\n"," ");
Une autre chose intéressante à faire est d'utiliser Android:minHeight
avec Android:layout_height="wrap_content"
. De cette façon, vous pouvez définir la taille de la modification lorsqu'elle est vide et lorsque l'utilisateur entre des éléments, le contenu s'étire en fonction de la quantité saisie par l'utilisateur, y compris de plusieurs lignes.