как добавить дефис (-) к номеру телефона после 2-х цифр, 7 цифр с помощью addTextChangedListener () в Android - PullRequest
0 голосов
/ 31 января 2019

Я использую editText с addTextChangedListener(), как отформатировать и получить шаблон, который я ищу.Это должно работать при добавлении и удалении, также пример длины символа равен 2, должен быть добавлен дефис, а когда я снова удаляю и добавляю, его следует добавить снова.

Ответы [ 3 ]

0 голосов
/ 31 января 2019

Вы можете добавить свои собственные фильтры к EditText
Этот пример фильтра добавляет «-» после ввода 2 символов

 InputFilter [] phoneFilter = new InputFilter[]{new InputFilter() {
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
        if (end > start ){
            String resultingTxt = dest.toString().substring(0, dstart) + source.subSequence(start, end) + dest.toString().substring(dend);
            if (resultingTxt.length() == 2)
                return source.subSequence(start, end) + "-";
        }

        return null;
    }
}};
editText.setFilters(phoneFilter);
0 голосов
/ 31 января 2019

Я думаю, что вы можете использовать какой-то предопределенный наблюдатель TextChange PhoneNumberFormattingTextWatcher

EditText inputField = (EditText) findViewById(R.id.inputfield);
inputField.addTextChangedListener(new PhoneNumberFormattingTextWatcher());

, так как для справки этот ответ приходит от https://stackoverflow.com/a/4674114/6656818

0 голосов
/ 31 января 2019

Пожалуйста, проверьте это.

txt_HomeNo.addTextChangedListener(new TextWatcher() {

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

        txt_HomeNo.setOnKeyListener(new OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if (keyCode == KeyEvent.KEYCODE_DEL)
                    keyDel = 1;
                return false;
            }
        });

        if (keyDel == 0) {
            int len = txt_HomeNo.getText().length();
            if(len == 3) {
                txt_HomeNo.setText(txt_HomeNo.getText() + "-");
                txt_HomeNo.setSelection(txt_HomeNo.getText().length());
            }
        } else {
            keyDel = 0;
        }
    }

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        // TODO Auto-generated method stub
    }
});
...