restringir edittext à linha única


312

possível duplicado: 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>

Eu quero fazer o acima EditTextpara ter apenas uma linha. Mesmo se o usuário pressionar "enter", o cursor não deve descer na segunda linha. Alguém pode me ajudar a fazer isso?


60
useandroid:singleLine=true
Praveenkumar

6
substitua android: lines = "1" por android:singleLine=true.
Mohammed Azharuddin Shaikh

3
verdade deve estar entre aspas "verdadeiro"
deepwinter

8
Quando o singleLine ficou obsoleto, você pode usar maxLines = 1 e inputType = text.
sunlover3

4
Usando android:inputType="textVisiblePassword"vai resolver o problema
Saad Mahmud

Respostas:


557

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

Você esqueceu o atributo android: maxLines . E consulte o android: inputType Com o seu exemplo, abaixo, apresentamos este resultado:

<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 na atual Eclipse IDE, nenhum indício depreciação é mostrado, e android: não maxLines não restringir a entrada para uma linha
mjn

10
use singleline = true
Dakshesh Khatri

2
@ Praveen: Você pode, por favor, dar a referência onde diz que o android: singleLine está obsoleto? Eu não posso vê-lo lá para API 23. Eu não vê-lo mencionado na documentação e também eu não receber qualquer aviso quando eu usá-lo com 23.0.1SDK
Shobhit Puri

5
Descontinuado desde o nível 3 da API. Consulte: developer.android.com/reference/android/R.attr.html#singleLine
Luis

3
Se você usar apenas android: maxLines = "1" não work.So você precisa usar tanto android: inputType = "text" e MaxLines -1.Then que vai funcionar perfeitamente
Hanuman

194

O uso android:singleLine="true"está obsoleto.

Basta adicionar seu tipo de entrada e definir maxline como 1 e tudo funcionará bem

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

80
Se você não especificar inputType, não funcionará é o que eu descobri.
Micro

10
você está certo. inputType = "textMultiLine" ainda fornecerá várias linhas, mesmo que você defina a linha máxima como 1. #
ralphgabb

2
Observe que android:inputType="number"já existe no máximo 1 linha.
Micer

Isso não funciona se minha visualização de texto for muito longa e eu desejar várias linhas, mas não com caracteres de nova linha.
Htafoya 11/07

@htafoya este trecho de código funciona para tornar a edição de texto em uma única linha. No entanto, você pode iniciar uma nova pergunta aqui no SO.
Ralphgabb 11/07/19

54

android:singleLineagora está obsoleto. A partir da documentação :

Esta constante foi descontinuada no nível 3 da API.

Este atributo está obsoleto. Em maxLinesvez disso, use para alterar o layout de um texto estático e, textMultiLineem vez disso , use o sinalizador no atributo inputType para visualizações de texto editáveis ​​(se singleLine e inputType forem fornecidos, os sinalizadores inputType substituirão o valor de singleLine).

Então você pode simplesmente definir android:inputType="textEmailSubject"ou qualquer outro valor que corresponda ao conteúdo do campo.


29
Se você deseja um campo de texto simples, use android:inputType="text".
PhoneixS

Obrigado MR. Bungle, textMultiLine funcionou para mim!
User1510006

18

Você deve adicionar esta linha no seu EditText em xml:

android:maxLines="1"

3
Como outras respostas observaram - isso foi preterido em favor maxLinese inputTypecombinação
Janis Peisenieks

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

Adicione o código acima para ter uma única linha na tag EditText no seu layout.

android:singleLine="true" is deprecated

Esta constante foi descontinuada no nível 3 da API .

Este atributo está obsoleto. Em vez disso, use maxLines para alterar o layout de um texto estático e, em vez disso, use o sinalizador textMultiLine no atributo inputType para exibições de texto editáveis ​​(se forem fornecidos o singleLine e o inputType, os sinalizadores inputType substituirão o valor do singleLine).


13

Agora, o android:singleLineatributo está obsoleto. Adicione esses atributos ao seu EditTextpara que uma EditTextlinha seja única.

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

11

Eu fiz isso no passado com android:singleLine="true"e, em seguida, adicionei um ouvinte para a tecla "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

Isso funcionará para o EditText:

android:inputType="text"

Então eu definiria um comprimento máximo para o texto de entrada:

android:maxLines="1"

Esses são os 2 que são necessários agora.



5

Todo mundo está mostrando o caminho XML, exceto uma pessoa que chamou o método setMaxLines de EditText. No entanto, quando fiz isso, não funcionou. Uma coisa que funcionou para mim foi definir o tipo de entrada.

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

Isso permite que AZ, az, 0-9 e caracteres especiais, mas não permite pressionar Enter. Quando você pressiona enter, ele passa para o próximo componente da GUI, se aplicável no seu aplicativo.

Você também pode definir o número máximo de caracteres que podem ser inseridos no EditText, ou ele empurrará o que estiver à direita para fora da tela ou apenas começará a arrastar a própria tela. Você pode fazer isso assim:

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

Isso define o máximo de caracteres para 8 no EditText. Espero que tudo isso ajude você.




2

por favor tente este código

android:inputType="textPersonName"

1

O @Aleks G OnKeyListener () funciona muito bem, mas eu o executei no MainActivity e tive que modificá-lo um pouco:

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

Espero que isso ajude alguém tentando fazer o mesmo.



1

Também é importante prestar atenção se a propriedade android: inputType for textMultiLine . Nesse caso, as propriedades android: singleLine, android: imeOptions, android: ellipsize e android maxLines serão ignoradas e seu EditText aceitará MultiLines de qualquer maneira.



1

Como android:singleLine="true"agora está depreciado , use

android: maxLines = "1"

Em vez disso, use maxLines para alterar o layout de um texto estático e, em vez disso, use o sinalizador textMultiLine no atributo inputType para exibições de texto editáveis ​​(se forem fornecidos o singleLine e o inputType, os sinalizadores inputType substituirão o valor do singleLine).


1

Use o código abaixo em vez do seu código

<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

no arquivo XML, adicione essas propriedades em Editar texto

 android:maxLines="1"

0
android:imeOptions="actionDone"

trabalhou para mim.


0

Você deve adicionar esta linha no seu EditText

android:maxLines="1"

e outra coisa, não se esqueça de definir android:inputType(o que você quiser, texto, telefone .., mas você deve defini-lo)


0

No arquivo XML. Basta adicionar

android: maxLines = "1"

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.