Respuestas:
Supongo que android:inputType="number"
los atributos XML.
android:inputType="phone"
en lugar de eso. Pero parece un poco más "ocupado".
Por ejemplo:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
0123456789.
y no0123456780.
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 = "teléfono"
inputType = "número"
android:inputType="numberPassword"
junto coneditText.setTransformationMethod(null);
android:inputType="numberDecimal"
<EditText
android:id="@+id/age"
android:numeric="integer"
/>
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();
}
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);
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.
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 ...
lo mas simple para mi
android:numeric="integer"
aunque esto también se personaliza más
android:digits="0123456789"