2013-06-14 13 views
5

Chcę ograniczyć mój EditText tylko do określonych znaków, takich jak (a-z, A-Z, 0-9, spacja,. I inne).Jak ograniczyć EditText do tylko określonych znaków w systemie Android?

Jeśli użytkownik spróbuje wprowadzić inne znaki poza listą, nie powinien być wyświetlany w edittext.

Czy jest jakiś sposób to zrobić?

+3

Dlaczego jest to nawet zamknięte? Pyta, jak zrobić coś, co wcale nie jest niejednoznaczne. Jedyną niejednoznacznością, jaką widzę tutaj, jest to, że istnieje więcej niż jeden sposób osiągnięcia tego, czego chce, ale tak jest w przypadku 90% pytań tutaj (90% zostało sporządzonych). –

+1

Oczywiście, jest to prawdziwe pytanie, jasno zdefiniowane i dobrze zrozumiane. Został nieprawidłowo oznaczony jako zamknięty przez @Andrew Barber. Odpowiedzi na to pytanie są również najbardziej cenne. Podałem zarówno to pytanie, jak i komentarz powyżej +1. –

+0

@MarioS Zmieniłem bliski powód na bardziej dokładny. –

Odpowiedz

5

Spróbuj tego:

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

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

+0

czy możesz wyjaśnić, jak z tego korzystać? – user2376732

+0

filtr wejściowy Myślę, że jest lepszy niż textwatcher w tym przypadku +1 – deadfish

0

Można użyć tego

yourEditText.addTextChangedListener()

Następnie należy sprawdzić, czy dane wprowadzone przez użytkownika dopasować swoje ograniczenia, czy nie, i wybrać to, co znaki do wyświetlenia.

4

Oto rozwiązanie dla Ciebie ....

Wystarczy dodać ciąg znaków do której chcesz 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 

     } 
    }); 
Powiązane problemy