在android中的edittext中添加4位数后的短划线/连字符

时间:2017-06-08 09:20:28

标签: android

我在edittext中像(2015-07)一样自动显示4位数字连字符后实现。我的代码工作正常,但问题是我在4位数值之前删除并再次输入它不起作用。当ed edtext重新输入2015-07到2014-07时,addTextChangedListener不会触发。但是当我使用“/”而不是“ - ”时,我可以重新输入值。有什么问题?

mEdtProductionCode.addTextChangedListener(new TextWatcher() {
        int prevL = 0;
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            prevL = mEdtProductionCode.getText().toString().length();
        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            int length = s.length();
            if ((prevL < length) && length == 4) {
                String data = mEdtProductionCode.getText().toString();
                mEdtProductionCode.setText(data + "-");
                mEdtProductionCode.setSelection(length + 1);
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

您应该在输入第五个字符后将字符检查移动到字符,然后删除String以将自定义字符放在其间:

 @Override
        public void afterTextChanged(Editable s) {
            int length = s.length();
            if ((prevL <= length) && length == 5) {

                String data = mEditProductionCode.getText().toString();
                String beginData = data.substring(0,4);

                String endData = Character.toString(data.charAt(length-1));
                mEditProductionCode.setText(beginData + "-" + endData);
                mEditProductionCode.setSelection(length + 1);
            }
        }

您还可以使用data.charAt(length-1) != '-'检查用户是否手动输入短划线,在这种情况下您只需忽略并且不对TextEdit进行更改。