【发布时间】:2017-01-30 12:43:58
【问题描述】:
我有一个 EditText,我想在其中只允许任何语言的字母和数字。我尝试在 XML 中使用不同的 android:inputType 和 android:digits。
我尝试使用 set TextWatcher 来编辑其中 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 来做到这一点。但我没有找到更好的方法。
如果有什么办法,请告诉我。
【问题讨论】:
-
我在stackoverflow.com/questions/41953259/… 找到了解决方案,但是当我粘贴文本时,光标移动到末尾
标签: android android-edittext multilingual android-textwatcher input-filter