2013年3月15日金曜日

EditTextの入力制限

InputFilter で正規表現を使って入力制限のサンプル

EditText の取得とInputFilter の設定
 EditText ed = (EditText)findViewById(R.id.editWeight);  
 InputFilter[] filters = { new MyFilter() };
 ed.setFilters(filters);

InputFilter
 public class MyFilter implements InputFilter {
   
     @Override
     public CharSequence filter(CharSequence source, int start, int end,
             Spanned dest, int dstart, int dend) {
  
      //入力文字を繋げる
         String destStr = dest.toString();
         String newValue = destStr.substring(0, dstart) + source + destStr.substring(dend);
         
         Log.v("ログ", "destStr::" + dest.toString());
         Log.v("ログ", "newValue::" + newValue);
  
         if (newValue.matches("^\\d{1,3}(\\.\\d|\\.)?$")) {
          //正規表現にマッチしている時に入力可
             return source;
         } else {
             return "";
         }
     }
  
 }

入力可能な値は
三桁までの数値で小数点以下一桁

考察:最後が.で終わってしまった時の処理
フォーカスが去った時に.を削除するか0を追加する。


【参考】正規表現
便利なサイト:http://regexpal.com/


関連記事

0 件のコメント:

コメントを投稿