¿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?

Sourabh
fuente

Respuestas:

403

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

Utyi
fuente
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"
/>
Barmaley Red Star
fuente
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);
Sourabh
fuente
@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"

abhiank
fuente
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"
Nafiz
fuente
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();
            }
Rushi Ayyappa
fuente
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.

Sandeep
fuente
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);

Rubela Shome
fuente
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.

Alexander Key
fuente
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 ...

Phlip
fuente
-4

lo mas simple para mi

android:numeric="integer" 

aunque esto también se personaliza más

android:digits="0123456789"
Henry Simon
fuente
android: numeric está en desuso desde API 3, consulte la respuesta a stackoverflow.com/questions/12625380/…
winne2