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 件のコメント:
コメントを投稿