web-dev-qa-db-fra.com

Autoriser le multi-ligne dans la vue EditText sous Android?

Comment autoriser le mode multi-lignes dans la vue EditText d'Android?

434
Adham

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 -->
/>
1087
Shardul

Vous trouverez peut-être mieux d'utiliser:

<EditText 
...
Android:inputType="textMultiLine"
/>

Ceci est dû au fait que Android:singleLine est obsolète.

227
Knossos

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" />
42
acoustic

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.

16
Nandagopal T

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

10

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

10
milan

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.

5
 <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
           /> 
5
Yogesh Sarvaiya

Pour désactiver le nombre de lignes précédemment assignées dans le thème, utilisez l'attribut xml: Android:lines="@null"

4
Oleg Bozhko
Android:inputType="textMultiLine"

Cette ligne de code fonctionne pour moi. Ajoutez ce code vous edittext dans votre fichier xml.

1
Yıldırım

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);

1
Fire3galaxy
<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"," ");
1
Kapil Parmar

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.

0
instanceof