Android EditText限制输入字符类型的方法总结

  

<强> Android EditText限制输入字符类型的方法总结

  

<强>前言:

  

最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下:
  

  

1,第一种方式是通过EditText的inputType来实现,可以通过xml或者Java文件来设置。假如我要设置为显示密码的形式,可以像下面这样设置:
  

  

在xml中         Android: inputType=" textPassword "      之前      

在java文件中,可以用myEditText.setInputType (InputType.TYPE_TEXT_VARIATION_PASSWORD);
  当然,还有更多的其他属性用来进行输入设置。

  

2,第二种是通过android:数字属性来设置,这种方式可以指出要显示的字符,比如我要限制只显示数字,可以这样:
  

        android:数字=" 0123456789 "   之前      

如果要显示的内容比较多,就比较麻烦了,将要显示的内容依次写在里面。

  

3,通过正则表达式来判断。下面的例子只允许显示字母,数字和汉字。
  

        公共静态字符串stringFilter (String str)抛出PatternSyntaxException {//只允许字母,数字和汉字   字符串正则表达式=" [^ a-zA-Z0-9 \ u4E00 - \ u9FA5]”;   p=Pattern.compile模式(正则表达式);   匹配器m=p.matcher (str);   返回m.replaceAll (" ") .trim ();   }   之前      

然后需要在TextWatcher的onTextChanged()中调用这个函数,
  

        @Override   公共空间>   公共抽象CharSequence进行过滤(   CharSequence进行源,//输入的文字   int开始,//开始位置   int,//结束位置   了桌子,//当前显示的内容   int dstart,//当前开始位置   int dend//当前结束位置   );   之前      

下面的实现使得EditText只接收字符(数字,字母和汉字)和“-”“_”,性格。isLetterOrDigit会把中文也当信做。
  

        editText。setFilters(新InputFilter [] {   新的InputFilter () {   公共CharSequence进行过滤(CharSequence进行源,int, int,跨越了桌子、int dstart,   int dend) {   for (int i=开始;我& lt;结束;我+ +){   如果(! Character.isLetterOrDigit (source.charAt(我)),,! Character.toString (source.charAt(我).equals (“_”),,! Character.toString (source.charAt(我).equals (“-”))   {   返回";   }   }   返回null;   }});   之前      

另外使用InputFilter还能限制输入的字符个数,如,,,

        EditText电视=newEditText(这个);      int最大长度=10;      InputFilter [] fArray=new InputFilter [1];      fArray [0]=new InputFilter.LengthFilter(最大长度);      tv.setFilters (fArray);      之前      

上面的代码可以限制输入的字符数最大为10。
  

  

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Android EditText限制输入字符类型的方法总结