Android edittext InputFilter 输入控制

举报
程思扬 发表于 2022/01/13 22:54:14 2022/01/13
【摘要】 InputFilter 可能需要对用户的输入进行一些限制,可以为EditText Widget设置一个InputFilter以实现这一功能 如: /* * 使用输入过滤器约束用户输入 * (只能输入两个大写字母) * setFilters方法需要调用一个InputFilter...

InputFilter 可能需要对用户的输入进行一些限制,可以为EditText Widget设置一个InputFilter以实现这一功能

如:


  
  1. /*
  2. * 使用输入过滤器约束用户输入
  3. * (只能输入两个大写字母)
  4. * setFilters方法需要调用一个InputFilter对象数组。
  5. * 本例中将所有输入的小写字母自动转换为大写字母,而且被限定在
  6. * 两个字符
  7. */
  8. final EditText text_f = (EditText)findViewById(R.id.editText01);
  9. text_f.setFilters(new InputFilter[]{
  10. new InputFilter.AllCaps(),
  11. new InputFilter.LengthFilter(2)
  12. });

下例 小数点后两位


  
  1. private void initEt() {
  2. tv1=(EditText) findViewById(R.id.et1);
  3. tv2=(EditText) findViewById(R.id.et2);
  4. tv1.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
  5. tv2.setTransformationMethod(PasswordTransformationMethod.getInstance());
  6. String s="adb";
  7. tv1.setTextKeepState(s);
  8. tv2.setText(s);
  9. tv1.setFilters(new InputFilter[] { lengthfilter });
  10. }
  11. // 设置小数位数控制
  12. InputFilter lengthfilter = new InputFilter() {
  13. public CharSequence filter(CharSequence source, int start, int end,
  14. Spanned dest, int dstart, int dend) {
  15. System.out.println(source.toString()+"-->"+start+"-->"+end);
  16. System.out.println(dest.toString()+"-->"+dstart+"-->"+dend);
  17. // 删除等特殊字符,直接返回
  18. if ("".equals(source.toString())) {
  19. return null;
  20. }
  21. String dValue = dest.toString();
  22. String[] splitArray = dValue.split("\\.");
  23. if (splitArray.length > 1) {
  24. String dotValue = splitArray[1];
  25. int diff = dotValue.length() + 1 - 2;
  26. if (diff > 0) {
  27. CharSequence c=source.subSequence(start, end - diff);
  28. System.out.println(c.toString());
  29. return c;
  30. }
  31. }
  32. return null;
  33. }
  34. };

 

文章来源: chengsy.blog.csdn.net,作者:程思扬,版权归原作者所有,如需转载,请联系作者。

原文链接:chengsy.blog.csdn.net/article/details/81387956

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。