У меня есть EditText, в котором я хочу разрешить только алфавиты и номера любого языка. Я пробовал с различными android:inputType
и android:digits
в XML.EditText допускает только алфавиты, цифры всех языков
Я попытался с множеством TextWatcher к EditText, в котором OnTextChanged(), как
@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. Но я не нашел лучшего способа.
Пожалуйста, дайте мне знать, если есть способ сделать это.
Я нашел решение в http://stackoverflow.com/questions/41953259/edittext-cursor-coming-to-start-for-every-letter-when-clear-text, но когда я вставляю текст, курсор перемещается до конца – Srikanth