InputFilter 可能需要对用户的输入进行一些限制,可以为EditText Widget设置一个InputFilter以实现这一功能
如:
/*
* 使用输入过滤器约束用户输入
* (只能输入两个大写字母)
* setFilters方法需要调用一个InputFilter对象数组。
* 本例中将所有输入的小写字母自动转换为大写字母,而且被限定在
* 两个字符
*/
final EditText text_f = (EditText)findViewById(R.id.editText01);
text_f.setFilters(new InputFilter[]{
new InputFilter.AllCaps(),
new InputFilter.LengthFilter(2)
});
下例 小数点后两位
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;
}
};
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有