<强> 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限制输入字符类型的方法总结