EditTextで受け入れ可能な文字「0123456789」と「セミコロン」を設定する必要があります。以下は私が使用しているコードです。
Android:digits="0123456789;"
Android:inputType="number|text
その実装の問題は、HTC電話ではセミコロンを入力できませんが、SamsungとSonyEricssonではセミコロンを入力できます。もう1つの問題は、SamsungとSony Ericssonでセミコロンを入力したときに、セミコロンを削除できないことです。上記のコードに不足しているプロパティはありますか?前もって感謝します。
Androidは、レイアウトxmlを変更し、Android:inputType = "text"を追加することで、テキストフィールドを編集する簡単な方法を提供します。これにより、数字、小数、電話、メールなどの基本的な検証を簡単に作成できます。ただし、英数字のパラメータはありません(つまり、特殊文字はありません)。これを行うには、以下のような入力フィルターを使用し、そのフィルターで検証するフィールドをコードで設定する必要があります。この入力フィルター
InputFilter alphaNumericFilter = new InputFilter() {
@Override
public CharSequence filter(CharSequence arg0, int arg1, int arg2, Spanned arg3, int arg4, int arg5)
{
for (int k = arg1; k < arg2; k++) {
if (!Character.isLetterOrDigit(arg0.charAt(k))) {
return "";
} //the first editor deleted this bracket when it is definitely necessary...
}
return null;
}
};
mFirstName.setFilters(new InputFilter[]{ alphaNumericFilter});
ユーザーが入力するときに入力できる内容を制限するには、この質問で説明されているTextWatcherを使用します Android:EditText入力を検証するにはどうすればよいですか?
解決策は、次のフィールドを変更することです。 http://developer.Android.com/reference/Android/widget/TextView.html#attr_Android:inputMethod
EditTextのInputMethodを設定して、必要なものを適切に取得できるようにします。
これが正規表現です
Pattern mPattern = Pattern.compile("^([1-9][0-9]{0,2})?(\\.[0-9]?)?$");
Matcher matcher = mPattern.matcher(loginNameString.toString());
if(!matcher.find())
{
//TODO
}