回答:
私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"
数字のみの入力の場合、これらの2つの方法の方がに勝ると思いますandroid:inputType="number"
。inputTypeとして「number」を指定することの制限は、キーボードが文字に切り替えることができ、他の特殊文字を入力できることです。キーボードには数字しか表示されないため、「numberPassword」inputTypeにはこれらの問題はありません。キーボードでは文字に切り替えることができないため、「電話」のinputTypeでも機能します。ただし、+、/、Nなどの特殊文字をいくつか入力することはできます。
android:inputType = "numberPassword" with editText.setTransformationMethod(null);
inputType = "phone"
inputType = "number"
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);を使用できます。
TextWatcherでキーボードのEnterキーを押すのをキャッチする必要があります。しかし、すべての数字キーボードandroid:inputType = "number"または "numberDecimal"または "numberPassword"などでは、ユーザーがEnterキーを押したときにEnterをキャッチできないことがわかりました。
私が試したところandroid:digits="0123456789\n"
、すべての数値キーボードがEnterとTextWatcherで動作し始めました。
だから私の方法は:
android:digits="0123456789\n"
android:inputType="numberPassword"
プラス editText.setTransformationMethod(null)
barmaleyとabhiankに感謝します。
私にとって最も単純な
android:numeric="integer"
これもよりカスタマイズしますが
android:digits="0123456789"