1

Ich habe einen EditText, in dem ich nur Alphabete und Zahlen jeder Sprache erlauben will. Ich habe mit verschiedenen android:inputType und android:digits in XML versucht.EditText erlaubt nur Alphabete, Ziffern aller Sprachen

ich mit Satz TextWatcher versucht, in dem EditText OnTextChanged() ist wie

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

Dieses feine arbeitet. Aber immer, wenn ich versuchte, den Text zu löschen, bewegt sich der Cursor für jeden Buchstaben. Bedeutet, wenn ich einen einzelnen Buchstaben lösche, bewegt sich der Cursor zum Start.

Wenn ich wie android:digits="abcdefghijklmnopqrstuvwxyz1234567890 " verwende, erlaubt es mir, nur Alphabete und Zahlen von Englisch zu tippen. Es erlaubt mir nicht, irgendeinen anderen Sprachtyp einzugeben, da ich hier nur Englisch verwandte Alphabete gegeben habe. Aber meine Anforderung besteht darin, das Kopieren/Einfügen von Alphabeten und Buchstaben anderer Sprachen zuzulassen. Ich hoffe, wir können dies tun, indem wir Patterns, TextWatcher und InputFilter verwenden. Aber ich habe keinen besseren Weg gefunden.

Bitte lassen Sie mich wissen, wenn es eine Möglichkeit gibt, dies zu tun.

+0

Ich fand Lösung bei http://stackoverflow.com/questions/41953259/edittext-cursor-coming-to-start-für-jeden-buchstaben-wenn-clear-text, aber wenn ich Text einfügen, bewegt sich der Cursor zum Ende – Srikanth

Antwort

1

Die Option, die Sie erwähnen das Problem ist einfach und schnell zu beheben, wenn Sie einen Filter Code verwenden wird so aussehen:

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

danke für die Antwort josedlujan. In diesem müssen wir alle Sonderzeichen auflisten. Wir müssen auch Smilies berücksichtigen. – Srikanth

+0

Auch beim Kopieren, Einfügen von Text im Editiertext, werden diese blockierten Symbole nicht eingeschränkt. – Srikanth

Verwandte Themen