web-dev-qa-db-ja.com

Android:EditTextで許容できる数字と文字を設定するにはどうすればよいですか?

EditTextで受け入れ可能な文字「0123456789」と「セミコロン」を設定する必要があります。以下は私が使用しているコードです。

Android:digits="0123456789;"
Android:inputType="number|text

その実装の問題は、HTC電話ではセミコロンを入力できませんが、SamsungとSonyEricssonではセミコロンを入力できます。もう1つの問題は、SamsungとSony Ericssonでセミコロンを入力したときに、セミコロンを削除できないことです。上記のコードに不足しているプロパティはありますか?前もって感謝します。

15
iamtheexplm06

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});   
28
Shankar Agarwal

ユーザーが入力するときに入力できる内容を制限するには、この質問で説明されているTextWatcherを使用します Android:EditText入力を検証するにはどうすればよいですか?

さらに良い: EditTextの正規表現に基づいて選択された文字のみを許可する

1
Sam

解決策は、次のフィールドを変更することです。 http://developer.Android.com/reference/Android/widget/TextView.html#attr_Android:inputMethod

EditTextのInputMethodを設定して、必要なものを適切に取得できるようにします。

1
JoxTraex

これが正規表現です

Pattern mPattern = Pattern.compile("^([1-9][0-9]{0,2})?(\\.[0-9]?)?$");
Matcher matcher = mPattern.matcher(loginNameString.toString());               
if(!matcher.find())
{
    //TODO
}
0
chris10169