Android EditText限制输入字符类型的方法总结
程序员文章站
2023-12-01 13:23:10
android edittext限制输入字符类型的方法总结
前言:
最近的项目上需要限制edittext输入字符的类型,就把可以实现这个功能的方法整理了一下:
1...
android edittext限制输入字符类型的方法总结
前言:
最近的项目上需要限制edittext输入字符的类型,就把可以实现这个功能的方法整理了一下:
1、第一种方式是通过edittext的inputtype来实现,可以通过xml或者java文件来设置。假如我要设置为显示密码的形式,可以像下面这样设置:
在xml中
android:inputtype="textpassword"
在java文件中,可以用 myedittext.setinputtype(inputtype.type_text_variation_password);
当然,还有更多的其他属性用来进行输入设置。
2、第二种是通过android:digits 属性来设置,这种方式可以指出要显示的字符,比如我要限制只显示数字,可以这样:
android:digits="0123456789"
如果要显示的内容比较多,就比较麻烦了,将要显示的内容依次写在里面。
3、通过正则表达式来判断。下面的例子只允许显示字母、数字和汉字。
public static string stringfilter(string str)throws patternsyntaxexception{ // 只允许字母、数字和汉字 string regex = "[^a-za-z0-9\u4e00-\u9fa5]"; pattern p = pattern.compile(regex); matcher m = p.matcher(str); return m.replaceall("").trim(); }
然后需要在textwatcher的ontextchanged()中调用这个函数,
@override public void ontextchanged(charsequence ss, int start, int before, int count) { string editable = edittext.gettext().tostring(); string str = stringfilter(editable.tostring()); if(!editable.equals(str)){ edittext.settext(str); //设置新的光标所在位置 edittext.setselection(str.length()); } }
4、通过inputfilter来实现。
实现inputfilter过滤器,需要覆盖一个叫filter的方法。
public abstract charsequence filter ( charsequence source, //输入的文字 int start, //开始位置 int end, //结束位置 spanned dest, //当前显示的内容 int dstart, //当前开始位置 int dend //当前结束位置 );
下面的实现使得edittext只接收字符(数字、字母和汉字)和“-”“_”,character.isletterordigit会把中文也当做letter。
edittext.setfilters(new inputfilter[] { new inputfilter() { public charsequence filter(charsequence source, int start, int end, spanned dest, int dstart, int dend) { for (int i = start; i < end; i++) { if ( !character.isletterordigit(source.charat(i)) && !character.tostring(source.charat(i)) .equals("_") && !character.tostring(source.charat(i)) .equals("-")) { return ""; } } return null; } });
另外使用inputfilter还能限制输入的字符个数,如
edittext tv =newedittext(this); int maxlength =10; inputfilter[] farray =new inputfilter[1]; farray[0]=new inputfilter.lengthfilter(maxlength); tv.setfilters(farray);
上面的代码可以限制输入的字符数最大为10。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
推荐阅读
-
Android EditText限制输入字符类型的方法总结
-
Android编程中EditText限制文字输入的方法
-
Android编程实现实时监听EditText文本输入的方法
-
Android EditText追加空格、限制字符等方法示例
-
Android最简单的限制输入方法(只包含数字、字母和符号)
-
Android EditText限制输入字符的方法总结
-
Android EditText追加空格、限制字符等方法示例
-
Android编程实现实时监听EditText文本输入的方法
-
EditText限制输入数字,精确到小数点后1位的设置方法
-
Android TextWatcher监控EditText中的输入内容并限制其个数