Validation allow only number and characters in edit text in android

后端 未结 9 1383
抹茶落季
抹茶落季 2020-11-27 16:20

In my application I have to validate the EditText. It should only allow character, digits, underscores, and hyphens.

Here is my code:

edit         


        
相关标签:
9条回答
  • 2020-11-27 17:15

    Instead of using your "manual" checking method, there is something very easy in Android:

    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)) && 
                    !Character.toString(source.charAt(i)).equals("_") && 
                    !Character.toString(source.charAt(i)).equals("-")) 
                { 
                    return ""; 
                } 
            } 
            return null; 
        } 
    }; 
    
    edittext.setFilters(new InputFilter[] { filter }); 
    

    Or another approach: set the allowed characters in the XML where you are creating your EditText:

    <EditText 
      android:inputType="text" 
      android:digits="0,1,2,3,4,5,6,7,8,9,*,qwertzuiopasdfghjklyxcvbnm,_,-" 
      android:hint="Only letters, digits, _ and - allowed" />
    
    0 讨论(0)
  • 2020-11-27 17:21

    A solution similar to the android:digits="0123456789*", is to use this:

    EditText etext = new EditText(this);
    etext.setKeyListener(DigitsKeyListener.getInstance("0123456789*"));
    

    An added bonus is that it also displays the numeric keypad.

    0 讨论(0)
  • 2020-11-27 17:23

    please try adding the android:digits="abcde.....012345789" attribute? although the android:digits specify that it is a numeric field it does work for me to set it to accept letters as well, and special characters as well (tested on SDK-7)

    0 讨论(0)
提交回复
热议问题