【问题标题】:Android : How to set acceptable numbers and characters in EditText?Android:如何在 EditText 中设置可接受的数字和字符?
【发布时间】:2012-05-07 20:08:42
【问题描述】:

我必须在 EditText 中设置可接受的字符“0123456789”和“分号”。下面是我正在使用的代码。

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

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

【问题讨论】:

  • This 看起来不错

标签: android validation android-edittext digits


【解决方案1】:

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});   

【讨论】:

  • 这会删除我按空格键时的字符
  • 为什么在某些设备上按空格键会删除字符?
  • 为了避免删除字符,我将edittext输入类型更改为textVisiblePassword
【解决方案2】:

要限制用户在键入时可以输入的内容,请使用 TextWatcher,在此问题 Android: How can I validate EditText input?. 中进行了讨论

更好的是:Allow only selected charcters based on regex in an EditText

【讨论】:

    【解决方案3】:

    解决方法是修改这些字段:http://developer.android.com/reference/android/widget/TextView.html#attr_android:inputMethod

    设置EditText的InputMethod,以便正确获取所需内容。

    【讨论】:

      【解决方案4】:

      这里是正则表达式

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

      【讨论】:

        猜你喜欢
        • 2014-03-10
        • 1970-01-01
        • 2011-08-29
        • 2015-08-13
        • 2014-06-06
        • 2011-01-22
        • 2011-06-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多