删除固定数量的数字

remove fixed number of digits

也许这对您来说并不难,但我需要一些帮助。我有 editText 显示 6 位数长度的代码。例如“292000”、“123000”等...

我在 editText 中有此信息我希望用户只能删除最后 2 位数字以输入他们自己的号码(他们只能更改最后两位数字)。例如"292020" "123001".

我正在使用 textwatchers,但我无法在其中使用 setText,因为我会收到 Whosebug 错误。任何帮助将不胜感激。

codArt.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(codArt.getSelectionStart() < 5) {
                codArt.setText(charSequence);
                codArt.setSelection(5);
            }
        }

        @Override
        public void afterTextChanged(Editable editable) {

        }
    });
}

尝试使用将 seteditable 设置为 true 的文本视图。将最少字符设置为 "n" 并保留最后 "k" 个字符可编辑。自定义文本视图可以解决问题

从 onTextChanged() 方法中删除代码并尝试如下...

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            if (s.length() == 4 && after == 0) {
                codArt.removeTextChangedListener(this);
                codArt.setText(s);
                codArt.setSelection(s.length());
                codArt.addTextChangedListener(this);
            }

    }