Câu trả lời:
Tôi đoán android:inputType="number"
tại các thuộc tính XML.
android:inputType="phone"
thay thế điều đó. Nhưng có vẻ hơi "bận" hơn.
Ví dụ:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
0123456789.
và không đọc0123456780.
Chỉ sử dụng chữ số đầu vào android:inputType="numberPassword"
cùng vớieditText.setTransformationMethod(null);
để loại bỏ tự động ẩn số.
HOẶC LÀ
android:inputType="phone"
Đối với chỉ đầu vào chữ số, tôi cảm thấy những cách này là tốt hơn android:inputType="number"
. Hạn chế của việc đề cập đến "số" là inputType là bàn phím cho phép chuyển sang các ký tự và cũng cho phép các ký tự đặc biệt khác được nhập. InputType "numberPassword" không có những vấn đề đó vì bàn phím chỉ hiển thị các chữ số. Ngay cả inputType "phone" cũng hoạt động vì bàn phím không cho phép bạn chuyển sang ký tự. Nhưng bạn vẫn có thể nhập một vài ký tự đặc biệt như +, /, N, v.v.
android: inputType = "numberPassword" với editText.setTransaturesMethod (null);
inputType = "phone"
inputType = "số"
android:inputType="numberPassword"
cùng vớieditText.setTransformationMethod(null);
android:inputType="numberDecimal"
<EditText
android:id="@+id/age"
android:numeric="integer"
/>
sử dụng dưới đây có thể giải quyết vấn đề của bạn tốt hơn;
trong xml:
<EditText
android:id="@+id/age"
android:inputType="numberDecimal|numberSigned" />
hoặc // trong hoạt động bên trong 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();
}
Nếu bất cứ ai muốn chỉ sử dụng số từ 0 đến 9 với imeOptions
kích hoạt thì hãy sử dụng dòng dưới đây trongEditText
android: inputType = "số | không"
Điều này sẽ chỉ cho phép số và nếu bạn nhấp vào nút thực hiện / tiếp theo của bàn phím, trọng tâm của bạn sẽ chuyển sang trường tiếp theo.
Bạn có thể sử dụng nó trong XML
<EditText
android:id="@+id/myNumber"
android:digits="123"
android:inputType="number"
/>
hoặc là,
android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.
hoặc là,
android:inputType="phone"
Về mặt lập trình, bạn có thể sử dụng
editText.setInputType (InputType.TYPE_CLASS_NUMBER);
Tôi cần bắt nhấn Enter trên bàn phím bằng TextWatcher . Nhưng tôi phát hiện ra rằng tất cả các bàn phím số android: inputType = "number" hoặc "numberDecimal" hoặc "numberPassword", v.v. không cho phép tôi bắt Enter khi người dùng nhấn nó.
Tôi đã thử android:digits="0123456789\n"
và tất cả các bàn phím số bắt đầu hoạt động với Enter và TextWatcher.
Vì vậy, cách của tôi là:
android:digits="0123456789\n"
android:inputType="numberPassword"
thêm editText.setTransformationMethod(null)
Cảm ơn barmaley và abhiank.
Tôi không biết câu trả lời đúng trong '13 là gì, nhưng hôm nay là:
myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers
Bạn nhận được mọi thứ, bao gồm bàn phím trên màn hình là bàn phím số.
Gần như tất cả mọi thứ. Espresso, trong trí tuệ vô hạn của nó, cho phép typeText("...")
bỏ qua bộ lọc và nhập rác một cách không thể giải thích được ...
đơn giản nhất đối với tôi
android:numeric="integer"
mặc dù điều này cũng tùy chỉnh nhiều hơn
android:digits="0123456789"