我的 edittext 格式有以下代码,因为它可以接受任何输入我没有设置任何输入类型:
if (cardNumberEditText != null) {
cardNumberEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int currSel = cardNumberEditText.getSelectionStart();
cardNumberEditText.removeTextChangedListener(textWatcher);
.
.
cardNumberEditText.setText(formattedNumber);
.
.
cardNumberEditText.setSelection(currSel);
cardNumberEditText.addTextChangedListener(textWatcher);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
所以最初我得到的默认输入类型是 ABC,现在当我将它更改为 ?123(使用 ABC/123? 切换按钮)并在输入一些数字后键盘变回 ABC。此代码在三星设备 s3 和 sywpe 上运行良好,但在与 L 和 HTC one 的 nexus 上运行不佳
当我注释 onTextChanged 中的所有代码时,它工作正常。所以当我调查时,我发现罪魁祸首是 cardNumberEditText.setText(formattedNumber);
我没有设置任何输入类型,我只是使用键盘上的 ABC/?123 切换键进行切换
任何帮助/建议为什么会发生这种情况(在少数设备上)以及我该如何纠正它??
最佳答案
最终成功了,不得不结合上面评论中提到的多个解决方案
因为 guilty 是 settext,所以我找到了它的替代品 - append
但要使用追加,我必须在不使用 settext 的情况下清除 edittext,this link救援
所以替换
cardNumberEditText.setText(formattedNumber);
与
cardNumberEditText.getText().clear();
cardNumberEditText.append(formattedNumber);
现在就像一个魅力
关于android - edittext.settext() 将键盘类型更改为默认值 [从 ?123 到 ABC],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365808/