Відповіді:
Я здогадуюсь 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 є те, що клавіатура дозволяє переходити на символи, а також дозволяє вводити інші спеціальні символи. "numberPassword" inputType не має таких проблем, оскільки на клавіатурі відображаються лише цифри. Навіть "телефонний" вхід типу працює, оскільки клавіатура не дозволяє переходити до символів. Але ви все одно можете ввести пару спеціальних символів, таких як +, /, 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();
}
Ви можете використовувати його в 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 = "число" або "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"