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) });
下例 小数点后两位
1.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; } };