2013-06-14 11 views
5

Voglio limitare il mio EditText solo a caratteri specifici come (a-z, A-Z, 0-9, spazio, e alcuni altri).Come limitare EditText solo ai caratteri specificati in Android?

Se l'utente tenta di inserire altri caratteri oltre l'elenco, non dovrebbe essere visualizzato in edittext.

C'è un modo per farlo?

+3

Perché questo ancora chiuso? Sta chiedendo come fare qualcosa che non sia affatto ambigua. L'unica ambiguità che posso vedere qui è che esiste più di un modo per ottenere ciò che vuole, ma questo è il caso del 90% delle domande qui (il 90% è stato inventato). –

+1

Assolutamente, questa è una domanda reale, chiaramente definita e ben compresa. È stato erroneamente contrassegnato come chiuso da Andrew Barber. Le risposte a questa domanda sono anche più preziose. Ho dato sia questa domanda sia il commento sopra +1. –

+0

@MarioS Ho modificato il motivo di chiusura in uno più preciso. –

risposta

5

Prova questo:

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

check How can I filter ListView data when typing on EditText in android

+0

puoi spiegare come usare questo? Filtro di input – user2376732

+0

Penso che sia meglio che il textwatcher in questo caso +1 – deadfish

0

È possibile utilizzare questo

yourEditText.addTextChangedListener()

allora, si vede se l'input dell'utente abbinare il vostro restrizione o no, e scegliere ciò che personaggi da mostrare.

4

Ecco la soluzione per voi ....

Basta aggiungere i caratteri della stringa che si desidera allowed

final String allowed = "abcdefghijklmnopqrstuvwxyz"; 
    final EditText editText = (EditText)findViewById(R.id.edit001); 
    editText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      char currentChar = s.charAt(start); 
      System.out.println(currentChar); 
      if(allowed.contains(Character.toString(currentChar))) 
      { 
       //Nothing to do 
      } 
      else 
      { 
       editText.setText(editText.getText().toString().substring(0, editText.getText().toString().length()-1)); 
       int position = editText.length(); 
       Editable etext = editText.getText(); 
       Selection.setSelection(etext, position); 
      } 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, 
       int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable arg0) { 
      // TODO Auto-generated method stub 

     } 
    }); 
Problemi correlati