总的来说,EditText中的InputFilter就是用于EditText输入或者删除时内容的替换的。
EditText中的InputFilter使用:
对“每一次输入”进行一次过滤,若重写filter()返回null,则输入的文本不会被替换掉,而若filter()返回一个String,则所输入的内容将会被替换掉;
editText.setFilters(new InputFilter[]{new MyInnputFilter()});
private class MyInputFilter implements InputFilter {
String ch = null;
String str = "dsdf";
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
if (source.equals(" ") || source.toString().contentEquals("\n")) return ""; //使输入的空格或回车失效
//最后输入的一个字符
if (dest.length() >str.length()) {
return "1";
}
if (ch.equals(source)) {
Toast.makeText(MainActivity.this, "符合要求",
Toast.LENGTH_SHORT).show();
//符合规定要求的字符以原输入显示
return dest.subSequence(dstart, dend) + source.toString();
} else {
Toast.makeText(MainActivity.this, "不符合要求喔~",
Toast.LENGTH_SHORT).show();
//如果没有按要求输入字符,则该字符被“*”代替,并显示
return "2";
}
}
其中参数解释:
source 新输入的字符串
start 新输入的字符串起始下标,一般为0
end 新输入的字符串终点下标,一般为source长度-1
dest 之前输入文本框内容
dstart和dend在输入时值相同,都表示之前内容长度,但若在删除内容时,dstart表示删除后字符串的长度,dend则表示删除前的长度;
网友评论