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?


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>

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"

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.


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"

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).


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"

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

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.



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.




2

por favor intente este código

android:inputType="textPersonName"

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.


1

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

android:singleLine="true"

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.



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).


1
android:imeOptions="actionDone"

trabajó para mi.


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..."/>

0

en el archivo XML agregue estas propiedades en Editar texto

 android:maxLines="1"

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)


0

En el archivo XML. Solo agrega

android: maxLines = "1"

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.