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