web-dev-qa-db-fra.com

restreindre edittext à une seule ligne

duplication 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 souhaite que la variable EditText ci-dessus ne comporte qu'une seule ligne. Même si l'utilisateur appuie sur "enter", le curseur ne doit pas descendre à la deuxième ligne. Quelqu'un peut-il m'aider à le faire?

256
Pankaj Singhal

Utilisez Android:maxLines="1" et Android:inputType="text"

Vous avez oublié le Android: maxLines attribut. 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>
468
Praveenkumar

Utiliser Android:singleLine="true" est obsolète.

Il suffit d’ajouter votre type d’entrée et de définir maxline sur 1 pour que tout fonctionne correctement.

Android:inputType="text"
Android:maxLines="1"
175
ralphgabb

Android:singleLine est maintenant obsolète. De la documentation :

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

Cet attribut est obsolète. Utilisez plutôt maxLines pour modifier la disposition d'un texte statique et utilisez l'indicateur textMultiLine dans l'attribut inputType à la place pour les vues de texte modifiable (si singleLine et inputType sont fournis, les indicateurs inputType remplacent la valeur de singleLine). 

Donc, vous pouvez simplement définir Android:inputType="textEmailSubject" ou toute autre valeur qui correspond au contenu du champ.

51
Mr. Bungle

Vous devez ajouter cette ligne dans votre EditText au format xml:

Android:maxLines="1"
17
UGD
Android:maxLines="1"
Android:inputType="text"

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

Android:singleLine="true" is deprecated

Cette constante était obsolète in API niveau 3 .

Cet attribut est obsolète. Utilisez maxLines à la place pour changer le mise en page d'un texte statique et utilisez l'indicateur textMultiLine dans le fichier attribut inputType à la place pour les vues de texte modifiables (si singleLine et inputType sont fournis, les indicateurs inputType remplaceront la valeur de singleLine).

14
ChrisR

Maintenant, l'attribut Android:singleLine est obsolète. Veuillez ajouter ces attributs à votre EditText pour que EditText soit une ligne.

Android:inputType="text"
Android:imeOptions="actionNext"
Android:maxLines="1"
12
Kaushik

J'ai déjà fait cela avec Android:singleLine="true" puis en ajoutant un écouteur pour la touche "Entrée":

((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
Aleks G

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.

11
Ray Hunter

Inclure Android:singleLine="true"

6
Vipul Shah

Tout le monde montre la manière XML, sauf qu'une personne a montré l'appel de la méthode setMaxLines de EditText. Cependant, quand j'ai fait ça, ça n'a pas marché. Une chose qui a fonctionné pour moi a été la définition du type d'entrée.

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

Ceci autorise les caractères spéciaux (A-Z, a-z, 0-9) et spéciaux, mais ne permet pas d'appuyer sur enter. Lorsque vous appuyez sur Entrée, le composant suivant de l'interface graphique est affiché, le cas échéant dans votre application.

Vous pouvez aussi vouloir définir le nombre maximum de caractères pouvant être placés dans cet EditText, ou bien il va pousser tout ce qui se trouve à sa droite de l'écran, ou tout simplement commencer à se terminer à l'écran. 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 sur 8 dans cet EditText. J'espère que tout cela vous aide.

5
Peter Griffin

s'il vous plaît essayez ce code

Android:inputType="textPersonName"
2
TheLastSummer

Par programme:

textView.setMaxLines(1);
2
Anton Duzenko

utilisation 

Android:ellipsize="end"
Android:maxLines="1"
2
Raghu Nagaraju

Afin de limiter, il vous suffit de définir l'option "une seule ligne" sur "true".

Android:singleLine="true"
1
user3469914

De plus, il est 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 quand même MultiLines.

1
Thales Valias

Le @Aleks G OnKeyListener () fonctionne vraiment 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 aide tous ceux qui essaient de faire de même.

1
Mark Cramer

Utilisez le code ci-dessous au lieu de votre code

<EditText 
    Android:id="@+id/searchbox"  
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:lines="1"
    Android:singleLine="true"
    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..."/>
1
Dipak Keshariya

Comme Android:singleLine="true" est maintenant Déprécié alors utilisez

Android: maxLines = "1"

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

1
Maveňツ

Ajouter cette ligne à votre edittext

Android: inputType = "text"

1
Sagar Devanga

dans le fichier XML ajouter ces propriétés dans le texte d'édition

 Android:maxLines="1"
0
yousef
Android:imeOptions="actionDone"

a travaillé pour moi.

0
Bikram Pandit

Vous devez ajouter cette ligne dans votre EditText

Android:maxLines="1"

et une autre chose, n'oubliez pas de définir Android:inputType (comme vous voulez, SMS, téléphone .., mais vous devez le définir)

0
GianhTran