Live editing of users input

后端 未结 6 1222
半阙折子戏
半阙折子戏 2020-11-27 07:37

Is it possible to auto insert characters into an EditText as the user inputs data?

I.e. if the user is entering a long number such as <

6条回答
  •  眼角桃花
    2020-11-27 07:52

    This is what I used

    private boolean mInEdit;
    
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if (!mInEdit) {
            mInEdit = true;
            String delimiter = " - ";
            //Remove chars from your delimiter first
            String digits = s.toString().replaceAll("[- ]", "")
                    .replaceAll("\\d{4}", "$0" + delimiter);
            //Handle deletion
            int dLength = delimiter.length();
            if (before > count && digits.endsWith(delimiter.charAt(dLength - 1)) {
                digits = digits.substring(0, digits.length() - dLength);
            }
            mCardNumber.setText(digits);
            mCardNumber.setSelection(mCardNumber.length());
            mInEdit = false;
        }
    }
    

    Here you replace delimiter with what you want to separate digits.

提交回复
热议问题