Маскируйте EditText с помощью формата номера телефона NaN, как в PhoneNumberUtils

// Swift 4.0 Удалить пробелы и новые строки

extension String {


   func trim() -> String {

       return self.trimmingCharacters(in: .whitespacesAndNewlines)

   }

}

24
задан eunique0216 11 November 2010 в 09:06
поделиться

1 ответ

Этот код позволяет Вам, вводят номер телефона с маской ### - ### - #### (без пробелов), и также здесь устраняется проблема с удалением телефонных цифр:

editText.addTextChangedListener(new TextWatcher() {
            final static String DELIMITER = "-";
            String lastChar;

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                int digits = editText.getText().toString().length();
                if (digits > 1)
                    lastChar = editText.getText().toString().substring(digits-1);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                int digits = editText.getText().length();
                // prevent input dash by user
                if (digits > 0 && digits != 4 && digits != 8) {
                    CharSequence last = s.subSequence(digits - 1, digits);
                    if (last.toString().equals(DELIMITER))
                        editText.getText().delete(digits - 1, digits);
                }
                // inset and remove dash
                if (digits == 3 || digits == 7) {
                    if (!lastChar.equals(DELIMITER))
                        editText.append("-"); // insert a dash
                    else
                        editText.getText().delete(digits -1, digits); // delete last digit with a dash
                }
                dataModel.setPhone(s.toString());
            }

            @Override
            public void afterTextChanged(Editable s) {}
        });

Расположение:

<EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:imeOptions="actionDone"
            android:textAlignment="textStart"
            android:inputType="number"
            android:digits="-0123456789"
            android:lines="1"
            android:maxLength="12"/>
0
ответ дан 28 November 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: