1

나는 모든 언어의 알파벳과 숫자 만 허용하려는 EditText가 있습니다. 나는 다른 android:inputTypeandroid:digits을 XML로 시도했다. EditText는 알파벳, 모든 언어의 숫자 만 허용합니다.

나는()하는 onTextChanged EDITTEXT을 설정 TextWatcher과 노력이 제대로 작동
@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; 
     } 
     } 
    } 

같다. 그러나 텍스트를 지우려고 할 때마다 커서는 모든 문자에 대해 시작하도록 움직입니다. 나가 단 하나 편지를 맑게 할 때 의미, 시작하기 위하여 움직이는 커서.

android:digits="abcdefghijklmnopqrstuvwxyz1234567890 "과 같이 사용하면 알파벳과 숫자 만 입력 할 수 있습니다. 다른 언어 텍스트를 입력 할 수 없습니다. 영어와 관련된 알파벳 만 입력 했으므로 여기에 입력하십시오. 하지만 제 요구 사항은 다른 언어의 알파벳과 문자를 복사/붙여 넣기하는 것입니다. Patterns, TextWatcher 및 InputFilter를 사용하여이 작업을 수행 할 수 있기를 바랍니다. 그러나 나는 더 좋은 길을 찾지 못했습니다.

이 작업을 수행 할 방법이 있으면 알려 주시기 바랍니다.

+0

내가 http://stackoverflow.com/questions/41953259에서 해결책을 발견/edittext-cursor-coming-to-for-every-for-clear-text로 시작하지만 텍스트를 붙여 넣을 때 커서는 끝으로 이동합니다. – Srikanth

답변

1

옵션을 사용하면 문제가 필터를 사용하는 경우 코드는 다음과 같이 될 것입니다, 쉽고 빠르게 해결하기 위해 언급 :

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

답장 josedlujan을 주셔서 감사합니다. 이 때 우리는 모든 특수 문자를 열거해야합니다. 웃음도 고려해야합니다. – Srikanth

+0

또한 edittext에서 텍스트를 붙여 넣기하는 동안이 차단 된 기호를 제한하지 않습니다. – Srikanth

관련 문제