Réponses:
Par défaut, tous les EditText
widgets d'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 -->
/>
inputType
annule au moins les attributs lines
et minLines
. J'ai eu inputType="phone"
et les attributs de lignes n'ont eu aucun effet
IndexOutOfBoundsException
dès que vous tapez quelque chose à cause deandroid:inputType="textMultiLine"
Vous pouvez trouver préférable d'utiliser:
<EditText
...
android:inputType="textMultiLine"
/>
En effet, android:singleLine
est obsolète.
singleLine
partie dépréciée de leur réponse (il y a longtemps). En ce qui concerne la question elle-même, c'est la partie la plus importante de leur réponse.
IndexOutOfBoundsException
dès que vous tapez quelque chose. Multiligne est désormais la valeur par défaut.
Cela fonctionne pour moi, en fait, ces 2 attributs sont importants: inputType et lines . De plus, vous aurez peut-être besoin d'une barre de défilement, le code ci-dessous montre comment en faire 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 cela fonctionne bien. 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 vue d'édition de texte, j'ajouterai la mienne. assurez-vous de le 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 sur votre classe java, cliquez sur listner ce texte d'édition comme suit, je vais ajouter le mien, chane noms selon le 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 a 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 à l'intérieur de la vue de défilement de niveau supérieur :) L'exemple le plus courant est peut-être la vue "Paramètres" qui a tellement d'éléments qu'ils dépassent la zone visible. Dans ce cas, vous les mettez tous en mode défilement pour faire défiler les paramètres. Dans le cas où vous avez besoin de texte d'édition défilable multiligne 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 attribuées dans le thème, utilisez l'attribut xml: android:lines="@null"
J'ai appris cela de http://www.pcsalt.com/android/edittext-with-single-line-line-wrapping-and-done-action-in-android/ , bien que je n'aime pas le site Web moi-même. Si vous voulez multiligne MAIS que vous souhaitez conserver le bouton Entrée en tant que bouton de publication, définissez le "défilement horizontal" de la vue de liste sur false.
android:scrollHorizontally="false"
Si cela ne fonctionne pas en XML, cela fonctionne bizarrement par programmation.
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 l'activité pour supprimer "\ n", l'utilisateur appuie sur la ligne suivante
String editStr= edittxtAddress.getText().toString().trim();
MyString= editStr.replaceAll("\n"," ");
si quelqu'un utilise AppCompatEditText, vous devez définir inputType = "textMultiLine" voici le code que vous pouvez copier
<androidx.appcompat.widget.AppCompatEditText
android:padding="@dimen/_8sdp"
android:id="@+id/etNote"
android:minLines="6"
android:singleLine="false"
android:lines="8"
android:scrollbars="vertical"
android:background="@drawable/rounded_border"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_25sdp"
android:layout_marginTop="32dp"
android:layout_marginEnd="@dimen/_25sdp"
android:autofillHints=""
android:gravity="start|top"
android:inputType="textMultiLine"
/>
pour le fond
<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="rectangle"
xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/_5sdp"/>
<stroke android:width="1dp" android:color="#C8C8C8"/>
</shape>
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, il s'étire en fonction de la quantité des entrées utilisateur, y compris plusieurs lignes.