1

J'ai un EditText dans lequel je veux autoriser uniquement les alphabets et les numéros de toutes les langues. J'ai essayé avec différents android:inputType et android:digits en XML.EditText permet uniquement les alphabets, les chiffres de toutes les langues

J'ai essayé avec l'ensemble TextWatcher à EditText dans lequel OnTextChanged() est comme

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

     switch (et.getId()) { 
     case R.id.edtMultiLang: { 
      et.removeTextChangedListener(watcher2); 
      et.setText(s.toString().replaceAll("[^[:alpha:]0-9 ]", "")); 
      // et.setText(s.toString().replaceAll("[^A-Za-z0-9 ]", "")); 
      et.addTextChangedListener(watcher2); 
      break; 
     } 
     } 
    } 

Cela fonctionne très bien. Mais chaque fois que j'essayais d'effacer du texte, le curseur se déplaçait pour démarrer chaque lettre. Signifie que lorsque j'efface une seule lettre, le curseur se déplace pour commencer.

Si j'utilise comme android:digits="abcdefghijklmnopqrstuvwxyz1234567890 ", il me permet de taper seulement des alphabets et des nombres d'anglais. Il ne me permet pas d'entrer un autre texte de langue Comme j'ai donné seulement des alphabets anglais liés ici. Mais mon exigence est de permettre le copier/coller des lettres et des alphabets d'autres langues. J'espère que nous pouvons le faire en utilisant Patterns, TextWatcher et InputFilter. Mais je n'ai pas trouvé mieux.

S'il vous plaît laissez-moi savoir si un moyen de le faire.

+0

Je trouve la solution à http://stackoverflow.com/questions/41953259/edittext-cursor-coming-to-start-pour-chaque-lettre-quand-clair-texte, mais quand je colle du texte, le curseur se déplace à la fin – Srikanth

Répondre

1

L'option que vous mentionnez pour résoudre le problème est facile et rapide, si vous utilisez un filtre de votre code sera comme ceci:

public static InputFilter filter = new InputFilter() { 
    @Override 
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { 
     String blockCharacterSet = "~#^|$%*[email protected]/()-'\":;,?{}=!$^';,?×÷<>{}€£¥₩%~`¤♡♥_|《》¡¿°•○●□■◇◆♧♣▲▼▶◀↑↓←→☆★▪:-);-):-D:-(:'(:O 1234567890"; 
     if (source != null && blockCharacterSet.contains(("" + source))) { 
      return ""; 
     } 
     return null; 
    } 
}; 

editText.setFilters(new InputFilter[] { filter }); 
+0

merci pour la réponse josedlujan. Dans ce cas, nous devons supprimer tous les caractères spéciaux. nous devons aussi considérer les smileys. – Srikanth

+0

Aussi lors de la copie, coller du texte dans edittext, il ne restreint pas ces symboles bloqués. – Srikanth