2014-09-26 46 views
1

我正在处理某个项目,其中某些edittext中我只希望它包含字母(小写字母和大写字母)和空格。所以我设置它在代码中动态如下:在文本中出现条件时,在edittext中输入的文本在较新的android版本上消失

txtoccupation.setFilters(new InputFilter[] { 
       new InputFilter() { 
        public CharSequence filter(CharSequence src, int start, 
          int end, Spanned dst, int dstart, int dend) { 
         if(src.equals("")){ // for backspace 
          return src; 
         } 
         if(src.toString().matches("[a-zA-Z ]+")){ 
          return src; 
         } 
         return ""; 
        } 


       } 
      }); 

上面的代码工作在我的较旧的Android 2.6 phone.That罚款,当我在比字母和空格之外的任何类型它不会对edittext.But所示,当我尝试上述新的kitkat设备,文本消失,并在下面的建议中显示。我该如何解决这个问题?

编辑: 我使用的输入滤波器

filter = 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.isLetter(source.charAt(i))&&!Character.isWhitespace(source.charAt(i))) { 
            return ""; 
          } 
          if(Character.isWhitespace(source.charAt(i))){ 
           return " "; 
          } 
        } 
        return null; 
      } 
    }; 
+0

你使用的是什么字符编码服用? – 2014-09-26 12:59:49

+0

@SanjayManohar我不明白你在说什么。 – 2014-09-26 13:01:04

回答

0

另一种选择是使用输入滤波器这样的字符串的方法:

InputFilter filter = 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))) { 
          return ""; 
        } 
      } 
      return null; 
    } 
    }; 

    edit.setFilters(new InputFilter[]{filter}); 

How do I use InputFilter to limit characters in an EditText in Android?

0

刚加入这一行的EditText上(在你的XML),要限制有字母只有

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ " 
+0

试试吧。这个会工作.. !! – Meenal 2014-09-26 12:44:59

+0

我早些时候尝试过,它不允许空格。 – 2014-09-26 13:00:38

+0

我编辑了我的答案..添加了空格与文本..然后它将需要空间也 – Meenal 2014-09-26 13:18:05

0

如果(currentString .toLowerCase()。startsWith(searchString)) { 您的代码 }

Android提供与像toLowerCase(),toUpperCase()等