美文网首页
EditText中的InputFilter

EditText中的InputFilter

作者: 3Q竹林 | 来源:发表于2017-02-21 16:16 被阅读452次

总的来说,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则表示删除前的长度;

相关文章

网友评论

      本文标题:EditText中的InputFilter

      本文链接:https://www.haomeiwen.com/subject/alcjwttx.html