restringir edittext a una sola línea

313

posible 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>

Quiero hacer que lo anterior EditTexttenga solo una línea. Incluso si el usuario presiona "enter", el cursor no debería bajar a la segunda línea. ¿Alguien puede ayudarme a hacer eso?

Pankaj Singhal
fuente
6060
usoandroid:singleLine=true
Praveenkumar
66
reemplace android: lines = "1" con android:singleLine=true.
Mohammed Azharuddin Shaikh
3
verdadero debe estar entre comillas "verdadero"
invierno profundo
8
Como singleLine quedó en desuso, puede usar maxLines = 1 y inputType = text.
sunlover3
44
Usar android:inputType="textVisiblePassword"resolverá el problema
Saad Mahmud

Respuestas:

557

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

Olvidó el atributo android: maxLines . Y consulte para android: inputType Con su ejemplo, a continuación se dará 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>
Praveenkumar
fuente
17
@ Lukasz'Severiaan'Grela en el IDE de Eclipse actual, no se muestra ninguna pista de desaprobación, y android: maxLines no restringe la entrada a una línea
mjn
10
use singleline = true
Dakshesh Khatri
2
@Praveen: ¿Puedes dar la referencia donde dice que Android: singleLine está en desuso? No puedo verlo allí para la API 23. No lo veo mencionado en la documentación y tampoco recibo ninguna advertencia cuando lo uso con 23.0.1SDK
Shobhit Puri
55
En desuso desde el nivel 3 de la API. Consulte: developer.android.com/reference/android/R.attr.html#singleLine
Luis
3
Si usa solo android: maxLines = "1" no funcionará. Por lo tanto, necesita usar android: inputType = "text" y maxlines -1.Entonces funcionará perfectamente
Hanuman
194

El uso android:singleLine="true"está en desuso.

Simplemente agregue su tipo de entrada y establezca maxline en 1 y todo funcionará bien

android:inputType="text"
android:maxLines="1"
ralphgabb
fuente
80
Si no especifica inputType, no funcionará, es lo que descubrí.
Micro
10
tu derecho inputType = "textMultiLine" aún le dará líneas múltiples incluso si establece la línea máxima en 1.
ralphgabb
2
Tenga en cuenta que para android:inputType="number"ya hay un máximo de 1 línea.
Micer
Esto no funciona si mi vista de texto es muy larga y quiero que sea multilínea, pero no con caracteres de nueva línea.
htafoya
@htafoya este fragmento de código funciona para hacer que el texto de edición sea de una sola línea. Sin embargo, puede comenzar una nueva pregunta aquí en SO.
ralphgabb
54

android:singleLineahora está en desuso. De la documentación :

Esta constante fue desaprobada en el nivel 3 de API.

Este atributo está en desuso. Use en su maxLineslugar para cambiar el diseño de un texto estático, y use el textMultiLineindicador en el atributo inputType para vistas de texto editables (si se proporcionan singleLine y inputType, los indicadores inputType anularán el valor de singleLine).

Por lo tanto, podría establecer android:inputType="textEmailSubject"o cualquier otro valor que coincida con el contenido del campo.

Señor selva
fuente
29
Si desea un campo de texto de línea simple, use android:inputType="text".
PhoneixS
Gracias Señor. ¡Bungle, textMultiLine funcionó para mí!
user1510006
18

Debe agregar esta línea en su EditText en xml:

android:maxLines="1"
UGD
fuente
3
Como han señalado otras respuestas, esto ha quedado en desuso a favor maxLinesy en inputTypecombinación
Janis Peisenieks
16
android:maxLines="1"
android:inputType="text"

Agregue el código anterior para tener una sola línea en la etiqueta EditText en su diseño.

android:singleLine="true" is deprecated

Esta constante fue desaprobada en el nivel 3 de API .

Este atributo está en desuso. Use maxLines en su lugar para cambiar el diseño de un texto estático, y use el indicador textMultiLine en el atributo inputType en su lugar para vistas de texto editables (si se proporcionan singleLine y inputType, los indicadores inputType anularán el valor de singleLine).

ChrisR
fuente
13

Ahora el android:singleLineatributo está en desuso. Agregue estos atributos a su EditTextpara EditTextque sea una sola línea.

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"
Kaushik
fuente
11

He hecho esto en el pasado android:singleLine="true"y luego agregué un oyente para la 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;
    }
});
Aleks G
fuente
11

Esto funcionará para EditText:

android:inputType="text"

Luego establecería una longitud máxima para el texto de entrada:

android:maxLines="1"

Esos son los 2 que se necesitan ahora.

Ray Hunter
fuente
6

Incluir android:singleLine="true"

Vipul Shah
fuente
5

Todos muestran la forma XML, excepto una persona que llama al método setMaxLines de EditText. Sin embargo, cuando hice eso, no funcionó. Una cosa que funcionó para mí fue configurar el tipo de entrada.

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

Esto permite AZ, az, 0-9 y caracteres especiales, pero no permite presionar enter. Cuando presione Intro, irá al siguiente componente de la GUI, si corresponde en su aplicación.

También es posible que desee establecer el número máximo de caracteres que se pueden poner en ese EditText, o de lo contrario empujará lo que esté a la derecha de la pantalla, o simplemente comenzará a salir de la pantalla. Puedes hacer esto así:

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

Esto establece los caracteres máximos a 8 en ese EditText. Espero que todo esto te ayude.

Peter Griffin
fuente
2

Programaticamente:

textView.setMaxLines(1);
Anton Duzenko
fuente
2

utilizar

android:ellipsize="end"
android:maxLines="1"
Raghu Nagaraju
fuente
2

por favor intente este código

android:inputType="textPersonName"
Felix Cruz
fuente
1

El @Aleks G OnKeyListener () funciona muy bien, pero lo ejecuté desde MainActivity y tuve que modificarlo ligeramente:

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 esto ayude a cualquiera que intente hacer lo mismo.

Mark Cramer
fuente
1

Para restringirlo, solo necesita establecer la opción de línea única en "verdadero".

android:singleLine="true"
usuario3469914
fuente
3
¡singleLine está en desuso!
Jamshaid Kamran
1

También es importante prestar atención si la propiedad android: inputType es textMultiLine . Si es así, las propiedades android: singleLine, android: imeOptions, android: ellipsize y android maxLines serán ignoradas y su EditText aceptará MultiLines de todos modos.

Thales Valias
fuente
1

Agregue esta línea a su texto de edición

android: inputType = "texto"

Sagar Devanga
fuente
1

Como android:singleLine="true"ahora se deprecia use

android: maxLines = "1"

Use maxLines en su lugar para cambiar el diseño de un texto estático, y use el indicador textMultiLine en el atributo inputType en su lugar para vistas de texto editables (si se proporcionan singleLine y inputType, los indicadores inputType anularán el valor de singleLine).

Maveň ツ
fuente
1
android:imeOptions="actionDone"

trabajó para mi.

bikram
fuente
1

Use el siguiente código en lugar de su 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..."/>
Dipak Keshariya
fuente
0

en el archivo XML agregue estas propiedades en Editar texto

 android:maxLines="1"
yousef
fuente
0

Debe agregar esta línea en su EditText

android:maxLines="1"

y otra cosa, no olvides configurar android:inputType(lo que quieras, texto, teléfono ..., pero debes configurarlo)

GianhTran
fuente
0

En el archivo XML. Solo agrega

android: maxLines = "1"

Kerelos
fuente