Android:如何在EditText中设置可接受的数字和字符?

15

我需要在EditText中设置可接受的字符为"0123456789"和"分号"。以下是我正在使用的代码。

android:digits="0123456789;"
android:inputType="number|text

该实现的问题是,在HTC手机上无法输入分号,但在三星和索尼爱立信手机上可以输入分号。另一个问题是,当我在三星和索尼爱立信手机上输入分号时,无法删除分号。以上代码中是否缺少任何属性?提前致谢。


1
这看起来是一个不错的方法来实现它。 - Atul Goyal
4个回答

27

在Android中,通过修改布局xml并添加android:inputType="text",可以提供一种简单的方法来编辑文本字段。这使得您可以轻松地创建一些基本验证,例如数字、小数、电话或电子邮件。但是它没有用于字母数字字符(即没有特殊字符)的参数。要实现此目的,您需要使用下面的输入过滤器,并在代码中设置要使用该过滤器验证的字段。此输入过滤器

 InputFilter alphaNumericFilter = new InputFilter() {   
     @Override  
     public CharSequence filter(CharSequence arg0, int arg1, int arg2, Spanned arg3, int arg4, int arg5)  
     {  
         for (int k = arg1; k < arg2; k++) {   
             if (!Character.isLetterOrDigit(arg0.charAt(k))) {   
             return ""; 
             }   //the first editor deleted this bracket when it is definitely necessary...
         }
         return null;
     }  
 };   
 mFirstName.setFilters(new InputFilter[]{ alphaNumericFilter});   

2
按下空格键会删除我的字符。 - jaimin
为什么在某些设备上按空格键会删除字符? - Ricardo
为了避免字符被删除,我将我的EditText输入类型更改为textVisiblePassword - Mahendran Sakkarai

1

1

0

这是正则表达式

Pattern mPattern = Pattern.compile("^([1-9][0-9]{0,2})?(\\.[0-9]?)?$");
Matcher matcher = mPattern.matcher(loginNameString.toString());               
if(!matcher.find())
{
    //TODO
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接