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?

Pankaj Singhal
la source
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>
Praveenkumar
la source
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"
ralphgabb
la source
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.

Mr. Bungle
la source
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"
UGD
la source
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).

ChrisR
la source
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"
Kaushik
la source
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;
    }
});
Aleks G
la source
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.

Ray Hunter
la source
6

Comprendre android:singleLine="true"

Vipul Shah
la source
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.

Peter Griffin
la source
2

Programmairement:

textView.setMaxLines(1);
Anton Duzenko
la source
2

utilisation

android:ellipsize="end"
android:maxLines="1"
Raghu Nagaraju
la source
2

veuillez essayer ce code

android:inputType="textPersonName"
Felix Cruz
la source
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.

Mark Cramer
la source
1

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

android:singleLine="true"
user3469914
la source
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.

Thales Valias
la source
1

Ajoutez cette ligne à votre edittext

android: inputType = "text"

Sagar Devanga
la source
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).

Maveň ツ
la source
1
android:imeOptions="actionDone"

travaillé pour moi.

bikram
la source
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..."/>
Dipak Keshariya
la source
0

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

 android:maxLines="1"
yousef
la source
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)

GianhTran
la source
0

Au fichier XML. Il suffit d'ajouter

android: maxLines = "1"

Kerelos
la source