Попробуйте это. Я отстой в регулярное выражение, так что это может быть не лучшим, но попробовать.
EditText text = new EditText(this);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (end > start) {
String destTxt = dest.toString();
String resultingTxt = destTxt.substring(0, dstart) + source.subSequence(start, end) + destTxt.substring(dend);
if (!resultingTxt.matches("^\\d(\\d(\\.\\d{0,2})?)?")) {
return "";
}
}
return null;
}
};
text.setFilters(filters);