¿Cómo establecer solo un valor numérico para edittext en Android?


209

Tengo un edittexten el que quiero que solo se inserten valores enteros. ¿Alguien puede decirme qué propiedad tengo que usar?

Respuestas:


403

Supongo que android:inputType="number"los atributos XML.


11
Hombre, me encanta el desarrollo de Android ... ¡tanto alboroto para obtener esta opción en páginas web!
Alex

14
Hola, en Android 2.3.3, es "numberSigned". Solo lo escribí aquí, en caso de que alguien lo esté buscando :)
Lemon Juice

¿Qué sucede si mi editText aparece en el cuadro de diálogo y, por lo tanto, solo lo declaro en código .java? es decir, el cuadro de diálogo editText no aparece en el archivo XML. ¿Cómo puedo lograr esto?
Sibbs Gambling

1
Además, puede usar android:inputType="phone"en lugar de eso. Pero parece un poco más "ocupado".
Chad Bingham

126

Por ejemplo:

<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>

3
Esta es la mejor solución !
RRTW

2
Supongo que la cadena debería leer 0123456789.y no0123456780.
audiFanatic

¡Esto también funciona con android: inputType = "number"! Lo necesitaba para evitar que los usuarios escriban operadores, paréntesis, etc. en el teclado numérico. ¡Qué salvavidas, hombre! Bienvenido a Costco ¡Te quiero!
gonzobrains

2
Esto no le permitirá poner números negativos y al mismo tiempo permitirá decimales duplicados (por ejemplo: 1.1.1 .....)
Rushi Ayyappa

Agradable, agregar android: digits también maneja el caso de copiar y pegar.
StoneLam

107

En código, podrías hacer

ed_ins.setInputType(InputType.TYPE_CLASS_NUMBER);

@MohamedKhamis es el nombre del EditText
KERiii

1
Sourabh pidió "Solo se insertarán valores enteros". Esto permite ingresar mucho más.
Zon

30

Para ingresar solo dígitos, use android:inputType="numberPassword"junto con editText.setTransformationMethod(null);para eliminar la ocultación automática del número.

O

android:inputType="phone"

Solo para la entrada de dígitos, creo que estas dos formas son mejores que android:inputType="number". La limitación de mencionar "número" como inputType es que el teclado permite cambiar a caracteres y también permite ingresar otros caracteres especiales. "numberPassword" inputType no tiene esos problemas ya que el teclado solo muestra dígitos. Incluso el tipo de entrada "teléfono" funciona ya que el teclado no le permite cambiar a caracteres. Pero aún puede ingresar un par de caracteres especiales como +, /, N, etc.

android: inputType = "numberPassword" con editText.setTransformationMethod (nulo);

inputType = "numberPassword"

inputType = "teléfono"

inputType = "teléfono"

inputType = "número"

inputType = "número"


1
¡Esto es perfecto! android:inputType="numberPassword"junto coneditText.setTransformationMethod(null);
coderpc

Este consejo hace que mi aplicación se perfeccione.
Kernelzero

6
android:inputType="numberDecimal"

55
Esto es genial, pero el sistema de números enteros no incluye ningún número decimal.
RileyE

@RileyE ¿Qué quieres decir con esto? Acabamos de comenzar a usar esto para todas nuestras entradas numéricas y quiero asegurarme de que no nos falta algo. ¡Gracias!
Joshua Pinter el


2

usar lo siguiente puede resolver su problema mejor;

en xml:

<EditText
      android:id="@+id/age"
      android:inputType="numberDecimal|numberSigned"        />

o // en actividad dentro de etfield.addtextchangelistener

     private String blockCharacterSet="+(/)N,*;#";//declare globally
               try {
                for (int i = 0; i < s.length(); i++) {


                    if (blockCharacterSet.contains(s.charAt(i) + "")) {

                        String corrected_settempvalue = arrivalsettemp.substring(0, arrivalsettemp.length() - 1);
                        et_ArrivalSetTemp.setText(corrected_settempvalue);
                        if (corrected_settempvalue.length() != 0)
                            et_ArrivalSetTemp.setSelection(corrected_settempvalue.length());

                    }
                }
            } catch (Exception d) {
                d.printStackTrace();
            }

2

Si alguien quiere usar solo el número del 0 al 9 con imeOptionshabilitar, use la línea de abajo en suEditText

android: inputType = "número | ninguno"

Esto solo permitirá el número y si hace clic en el botón Listo / Siguiente del teclado, su enfoque se moverá al siguiente campo.


0

Puedes usarlo en XML

<EditText
 android:id="@+id/myNumber"
 android:digits="123"
 android:inputType="number"
/>

o,

android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.

o,

android:inputType="phone"

Programáticamente puede usar
editText.setInputType (InputType.TYPE_CLASS_NUMBER);


0

Necesito atrapar presionando Enter en un teclado con TextWatcher . Pero descubrí que todos los teclados numéricos android: inputType = "number" o "numberDecimal" o "numberPassword", etc.no me permiten atrapar Enter cuando el usuario lo presiona.

Lo intenté android:digits="0123456789\n"y todos los teclados numéricos comenzaron a funcionar con Enter y TextWatcher.

Entonces mi camino es:

android:digits="0123456789\n"
android:inputType="numberPassword"

más editText.setTransformationMethod(null)

Gracias a barmaley y abhiank.


0

No sé cuál fue la respuesta correcta en el '13, pero hoy es:

myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers

Obtiene todo, incluso el teclado en pantalla es un teclado numérico.

Casi todo. El espresso, en su sabiduría infinita, deja typeText("...")pasar el filtro inexplicablemente y entra en la basura ...


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.