Yanıtlar:
android:inputType="number"
XML öznitelikleri sanırım .
android:inputType="phone"
. Ama biraz daha "meşgul" görünüyor.
Örneğin:
<EditText
android:id="@+id/myNumber"
android:digits="0123456789."
android:inputType="numberDecimal"
/>
0123456789.
ve değil varsayıyorum0123456780.
Yalnızca rakam girişi için , numaranın otomatik gizlenmesini kaldırmak için tuşuyla android:inputType="numberPassword"
birlikte kullanın editText.setTransformationMethod(null);
.
VEYA
android:inputType="phone"
Sadece rakam girişi için, bu çift yolların daha iyi olduğunu hissediyorum android:inputType="number"
. İnputType olarak "sayı" dan bahsetmenin sınırlaması, klavyenin karakterlere geçmesine ve diğer özel karakterlerin girilmesine izin vermesidir. Klavye yalnızca rakamları gösterdiğinden "numberPassword" inputType bu sorunları içermez. "Telefon" inputType bile klavye karakterlere geçiş yapmanıza izin vermediği için çalışır. Ancak yine de +, /, N vb.Gibi birkaç özel karakter girebilirsiniz.
android: inputType = "numberPassword" ile editText.setTransformationMethod (null);
InputType = "telefon"
InputType = "sayı"
android:inputType="numberPassword"
ile birlikteeditText.setTransformationMethod(null);
android:inputType="numberDecimal"
<EditText
android:id="@+id/age"
android:numeric="integer"
/>
Aşağıdakileri kullanmak sorununuzu daha iyi çözebilir;
xml biçiminde:
<EditText
android:id="@+id/age"
android:inputType="numberDecimal|numberSigned" />
veya // etfield.addtextchangelistener içindeki etkinliklerde
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'de kullanabilirsiniz
<EditText
android:id="@+id/myNumber"
android:digits="123"
android:inputType="number"
/>
veya,
android:inputType="numberPassword" along with editText.setTransformationMethod(null); to remove auto-hiding of the number.
veya,
android:inputType="phone"
Programlı olarak
editText.setInputType (InputType.TYPE_CLASS_NUMBER) kullanabilirsiniz;
TextWatcher ile bir klavyede Enter tuşuna basarak yakalamam gerekiyor . Ancak tüm sayısal klavyelerin android olduğunu öğrendim: inputType = "number" veya "numberDecimal" veya "numberPassword" vb.
Denedim android:digits="0123456789\n"
ve tüm sayısal klavyeler Enter ve TextWatcher ile çalışmaya başladı.
Benim yolum:
android:digits="0123456789\n"
android:inputType="numberPassword"
artı editText.setTransformationMethod(null)
Barmaley ve abhiank'a teşekkürler.
'13'te doğru cevabın ne olduğunu bilmiyorum, ama bugün:
myEditText.setKeyListener(DigitsKeyListener.getInstance(null, false, true)); // positive decimal numbers
Ekran klavyesi de dahil olmak üzere her şey sayısal bir tuş takımıdır.
Neredeyse her şey. Espresso, sonsuz bilgeliğiyle, typeText("...")
filtreyi açık bir şekilde atlatır ve çöpe girer ...
benim için en basit
android:numeric="integer"
bu da daha özelleştirmek rağmen
android:digits="0123456789"