Android edittext InputFilter 输入控制
【摘要】
InputFilter 可能需要对用户的输入进行一些限制,可以为EditText Widget设置一个InputFilter以实现这一功能
如:
/* * 使用输入过滤器约束用户输入 * (只能输入两个大写字母) * setFilters方法需要调用一个InputFilter...
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;
-
}
-
};
文章来源: chengsy.blog.csdn.net,作者:程思扬,版权归原作者所有,如需转载,请联系作者。
原文链接:chengsy.blog.csdn.net/article/details/81387956
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)