Ответы:
Я думаю, android:inputType="number"
в атрибутах XML.
android:inputType="phone"
вместо этого. Но это кажется немного более "занятым".
Например:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
0123456789.
а не0123456780.
Для ввода только цифр используйте android:inputType="numberPassword"
вместе с, editText.setTransformationMethod(null);
чтобы удалить автоматическое скрытие номера.
ИЛИ
android:inputType="phone"
Я чувствую, что эти два способа лучше, чем ввод только цифр android:inputType="number"
. Ограничение упоминания «числа» в качестве inputType состоит в том, что клавиатура позволяет переключаться на символы, а также позволяет вводить другие специальные символы. У inputType «numberPassword» таких проблем нет, так как клавиатура показывает только цифры. Даже «телефонный» тип ввода работает, так как клавиатура не позволяет переключаться на символы. Но вы все равно можете ввести пару специальных символов, таких как +, /, N и т. Д.
android: inputType = "numberPassword" с editText.setTransformationMethod (null);
inputType = "телефон"
inputType = "число"
android:inputType="numberPassword"
вместе сeditText.setTransformationMethod(null);
android:inputType="numberDecimal"
<EditText
android:id="@+id/age"
android:numeric="integer"
/>
Использование ниже может решить вашу проблему лучше;
в XML:
<EditText
android:id="@+id/age"
android:inputType="numberDecimal|numberSigned" />
или // в действии внутри 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();
}
Если кто-то хочет использовать только число от 0 до 9 с imeOptions
включенной функцией, используйте ниже строку в вашемEditText
Android: inputType = "номер | ни"
Это позволит только номер, и если вы нажмете кнопку «Готово / следующее» на клавиатуре, ваш фокус переместится в следующее поле.
Вы можете использовать его в XML
<EditText
android:id="@+id/myNumber"
android:digits="123"
android:inputType="number"
/>
или,
android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.
или,
android:inputType="phone"
Программно вы можете использовать
editText.setInputType (InputType.TYPE_CLASS_NUMBER);
Мне нужно отловить нажатие Enter на клавиатуре с TextWatcher . Но я обнаружил, что все цифровые клавиатуры android: inputType = "number" или "numberDecimal" или "numberPassword" и т. Д. Не позволяют мне перехватывать Enter, когда пользователь нажимает его.
Я попробовал, android:digits="0123456789\n"
и все цифровые клавиатуры начали работать с Enter и TextWatcher.
Итак, мой путь:
android:digits="0123456789\n"
android:inputType="numberPassword"
плюс editText.setTransformationMethod(null)
Спасибо бармалей и абхианков.
Я не знаю, какой правильный ответ был в 13 году, но сегодня это:
myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers
Вы получаете все, включая экранную клавиатуру и цифровую клавиатуру.
Почти все. Эспрессо в своей бесконечной мудрости позволяет typeText("...")
необъяснимым образом обойти фильтр и попасть в мусор ...
самый простой для меня
android:numeric="integer"
хотя это тоже больше подгоняет
android:digits="0123456789"