InputFilter 可能需要对用户的输入进行一些限制,可以为EditText Widget设置一个InputFilter以实现这一功能
如:
代码语言:javascript复制/*
* 使用输入过滤器约束用户输入
* (只能输入两个大写字母)
* setFilters方法需要调用一个InputFilter对象数组。
* 本例中将所有输入的小写字母自动转换为大写字母,而且被限定在
* 两个字符
*/
final EditText text_f = (EditText)findViewById(R.id.editText01);
text_f.setFilters(new InputFilter[]{
new InputFilter.AllCaps(),
new InputFilter.LengthFilter(2)
});
下例 小数点后两位
代码语言:javascript复制private void initEt() {
tv1=(EditText) findViewById(R.id.et1);
tv2=(EditText) findViewById(R.id.et2);
tv1.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
tv2.setTransformationMethod(PasswordTransformationMethod.getInstance());
String s="adb";
tv1.setTextKeepState(s);
tv2.setText(s);
tv1.setFilters(new InputFilter[] { lengthfilter });
}
// 设置小数位数控制
InputFilter lengthfilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
System.out.println(source.toString() "-->" start "-->" end);
System.out.println(dest.toString() "-->" dstart "-->" dend);
// 删除等特殊字符,直接返回
if ("".equals(source.toString())) {
return null;
}
String dValue = dest.toString();
String[] splitArray = dValue.split("\.");
if (splitArray.length > 1) {
String dotValue = splitArray[1];
int diff = dotValue.length() 1 - 2;
if (diff > 0) {
CharSequence c=source.subSequence(start, end - diff);
System.out.println(c.toString());
return c;
}
}
return null;
}
};