edittext.settext()将键盘类型更改为默认值[从?123到ABC]

时间:2014-10-14 16:34:39

标签: android keyboard android-edittext android-softkeyboard

我的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?toggel按钮)时,输入一些数字后键盘会变回ABC。这个代码可以在三星设备s3和sywpe上正常工作,但不能在L和HTC上使用nexus

当我评论onTextChanged中的所有代码时,它工作正常。因此,当我调查时,我发现罪魁祸首是cardNumberEditText.setText(formattedNumber);

我没有设置任何输入类型,我只是使用键盘上的ABC /?123切换键进行切换

任何帮助/建议为什么会发生这种情况(在少数设备上)以及如何纠正???

2 个答案:

答案 0 :(得分:30)

finnaly让它发挥作用,必须结合上述评论中提到的多种解决方案

因为有罪是settext,我找到了替代它 - 追加

但要使用append我必须清除edittext而不使用settext,this link来救援

如此替换

cardNumberEditText.setText(formattedNumber);

cardNumberEditText.getText().clear();
cardNumberEditText.append(formattedNumber);

现在就像魅力一样

答案 1 :(得分:0)

我遇到了类似的问题,但是在我调用后键盘已更改为默认值 scrollView.fullScroll(NestedScrollView.FOCUS_DOWN) 显示键盘时 我刚刚将 fullScroll 方法替换为 smoothScrollTo 并且一切正常