【发布时间】:2015-07-29 12:00:17
【问题描述】:
更新:实际上,这不是华硕手机的问题,而是华硕 ZenUI 键盘的问题。您可以安装一个您喜欢的键盘来解决问题。我已经安装了 Google 键盘测试了 Zenfone 2。我的TextWatcher 中的所有内容都可以正常工作。但这不是错误修复或问题解决方案。
我有两个InputFilters 和一个TextWatcher 附加到我的EditText。
InputFilters:标准InputFilter.AllCaps() 过滤器和自定义“仅限字母字符”。它们就像魔法一样发挥作用。
TextWatcher 进行一些文本转换(将符号从俄语音译成英语)。 TextWatcher 也可以正常工作,但不适用于华硕手机(在 Zenfone 4 和 5 上测试)。 Nexus 5、Genymotion 模拟器和三星设备都可以。
问题是华硕手机不允许输入多个符号。可能TextWatcher 或setSelection() 有问题(当TextWatcher 被禁用时,华硕一切正常)。
TextView的列表:
etCardholder.setFilters(new InputFilter[]{new InputFilter.AllCaps(), new NameInputeFilter(false)});
twTransliterator = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
etCardholder.removeTextChangedListener(twTransliterator);
etCardholder.setText(StringTools.transliterateCharacterRuToEn(s.toString()));
etCardholder.addTextChangedListener(twTransliterator);
}
@Override
public void afterTextChanged(Editable s) {
etCardholder.setSelection(etCardholder.getText().length());
validateCardData();
}
};
etCardholder.addTextChangedListener(twTransliterator);
我尝试不使用setSelection() 设置光标的位置,而是使用append()。这里的结果相同。
你有什么想法吗?以及如何走动?
【问题讨论】:
标签: android android-edittext textwatcher android-input-filter