restreindre edittext à une seule ligne


313

doublon possible: android-singleline-true-not-working-for-edittext

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

Je veux que ce qui précède EditTextn'ait qu'une seule ligne. Même si l'utilisateur appuie sur "Entrée", le curseur ne doit pas descendre jusqu'à la deuxième ligne. Quelqu'un peut-il m'aider à faire cela?


60
utilisationandroid:singleLine=true
Praveenkumar

6
remplacez android: lines = "1" par android:singleLine=true.
Mohammed Azharuddin Shaikh

3
true doit être entre guillemets "true"
deepwinter

8
Comme singleLine est devenu obsolète, vous pouvez utiliser maxLines = 1 et inputType = text.
sunlover3

4
L'utilisation android:inputType="textVisiblePassword"résoudra le problème
Saad Mahmud

Réponses:


557

Utiliser android:maxLines="1"etandroid:inputType="text"

Vous avez oublié l' attribut android: maxLines . Et référez-vous à Android: inputType Avec votre exemple, ci-dessous donnera ce résultat:

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

17
@ Lukasz'Severiaan'Grela dans l'IDE Eclipse actuel, aucun indice de dépréciation n'est affiché, et android: maxLines ne limite pas l'entrée à une seule ligne
mjn

10
utiliser singleline = true
Dakshesh Khatri

2
@Praveen: Pouvez-vous s'il vous plaît donner la référence où il est dit l' androïde: singleLine est déconseillé? Je ne le vois pas pour l'API 23. Je ne le vois pas mentionné dans la documentation et je ne reçois aucun avertissement lorsque je l'utilise avec le 23.0.1SDK
Shobhit Puri

5
Déconseillé depuis le niveau 3 de l'API. Voir: developer.android.com/reference/android/R.attr.html#singleLine
Luis

3
Si vous utilisez uniquement android: maxLines = "1" ne fonctionnera pas. Vous devez donc utiliser à la fois android: inputType = "text" et maxlines -1.Ensuite, cela fonctionnera parfaitement
Hanuman

194

L'utilisation android:singleLine="true"est déconseillée.

Ajoutez simplement votre type d'entrée et définissez maxline sur 1 et tout fonctionnera bien

android:inputType="text"
android:maxLines="1"

80
Si vous ne spécifiez pas inputType, cela ne fonctionnera pas, c'est ce que j'ai découvert.
Micro

10
tu as raison. inputType = "textMultiLine" vous donnera toujours une multiligne même si vous définissez la ligne maximale sur 1.
ralphgabb

2
Notez que pour android:inputType="number"il y a déjà max 1 ligne.
Micer

Cela ne fonctionne pas si mon affichage de texte est très long et que je le souhaite multiligne, mais pas avec des caractères de nouvelle ligne.
htafoya

@htafoya cet extrait de code permet de modifier le texte sur une seule ligne. Vous pouvez cependant commencer une nouvelle question ici à SO.
ralphgabb

54

android:singleLineest désormais obsolète. De la documentation :

Cette constante est déconseillée au niveau 3 de l'API.

Cet attribut est obsolète. Utilisez à la maxLinesplace pour modifier la présentation d'un texte statique et utilisez textMultiLineplutôt l' indicateur dans l'attribut inputType pour les vues de texte modifiables (si singleLine et inputType sont fournis, les indicateurs inputType remplaceront la valeur de singleLine).

Vous pouvez donc simplement définir android:inputType="textEmailSubject"ou toute autre valeur correspondant au contenu du champ.


29
Si vous voulez un champ de texte simple, utilisez android:inputType="text".
PhoneixS

Merci monsieur. Bungle, textMultiLine a fonctionné pour moi!
user1510006

18

Vous devez ajouter cette ligne dans votre EditText en xml:

android:maxLines="1"

3
Comme d'autres réponses l'ont noté - cela a été déprécié en faveur maxLineset en inputTypecombinaison
Janis Peisenieks

16
android:maxLines="1"
android:inputType="text"

Ajoutez le code ci-dessus pour avoir une seule ligne dans la balise EditText dans votre mise en page.

android:singleLine="true" is deprecated

Cette constante est déconseillée au niveau 3 de l'API .

Cet attribut est obsolète. Utilisez plutôt maxLines pour modifier la présentation d'un texte statique et utilisez plutôt l'indicateur textMultiLine dans l'attribut inputType pour les vues de texte modifiables (si singleLine et inputType sont fournis, les indicateurs inputType remplaceront la valeur de singleLine).


13

L' android:singleLineattribut est désormais obsolète. Veuillez ajouter ces attributs à votre EditTextpour qu'une EditTextligne soit unique.

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"

11

J'ai fait cela dans le passé avec android:singleLine="true"puis en ajoutant un écouteur pour la touche "enter":

((EditText)this.findViewById(R.id.mytext)).setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

11

Cela fonctionnera pour le EditText:

android:inputType="text"

Ensuite, je définirais une longueur maximale pour le texte d'entrée:

android:maxLines="1"

Ce sont les 2 qui sont nécessaires maintenant.



5

Tout le monde montre la méthode XML, sauf une personne qui a appelé la méthode setMaxLines d'EditText. Cependant, quand je l'ai fait, cela n'a pas fonctionné. Une chose qui a fonctionné pour moi a été de définir le type d'entrée.

EditText editText = new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT);

Cela autorise AZ, az, 0-9 et les caractères spéciaux, mais ne permet pas d'appuyer sur Entrée. Lorsque vous appuyez sur Entrée, il ira au composant GUI suivant, le cas échéant dans votre application.

Vous pouvez également définir le nombre maximal de caractères pouvant être insérés dans cet EditText, sinon il poussera tout ce qui se trouve à sa droite hors de l'écran, ou commencera simplement à disparaître de l'écran lui-même. Vous pouvez faire ceci comme ceci:

InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(8);
editText.setFilters(filters);

Cela définit le nombre maximal de caractères à 8 dans ce EditText. J'espère que tout cela vous aidera.





1

Le @Aleks G OnKeyListener () fonctionne très bien, mais je l'ai exécuté depuis MainActivity et j'ai donc dû le modifier légèrement:

EditText searchBox = (EditText) findViewById(R.id.searchbox);
searchBox.setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(searchBox.getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

J'espère que cela aidera quiconque essaie de faire de même.


1

Afin de restreindre, il vous suffit de définir l'option de ligne unique sur "true".

android:singleLine="true"

3
singleLine est obsolète!
Jamshaid Kamran

1

Il est également important de faire attention si la propriété android: inputType est textMultiLine . Si c'est le cas, les propriétés android: singleLine, android: imeOptions, android: ellipsize et android maxLines seront ignorées et votre EditText acceptera MultiLines de toute façon.



1

Comme android:singleLine="true"maintenant déprécié , utilisez

android: maxLines = "1"

Utilisez plutôt maxLines pour modifier la présentation d'un texte statique et utilisez plutôt l'indicateur textMultiLine dans l'attribut inputType pour les vues de texte modifiables (si singleLine et inputType sont fournis, les indicateurs inputType remplaceront la valeur de singleLine).


1
android:imeOptions="actionDone"

travaillé pour moi.


1

Utilisez ci-dessous le code au lieu de votre code

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search..."/>

0

dans un fichier XML, ajoutez ces propriétés dans Modifier le texte

 android:maxLines="1"

0

Vous devez ajouter cette ligne dans votre EditText

android:maxLines="1"

et autre chose, n'oubliez pas de définir android:inputType(tout ce que vous voulez, texte, téléphone .., mais vous devez le définir)


0

Au fichier XML. Il suffit d'ajouter

android: maxLines = "1"

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.