ввод номера телефона
мне надо преобразовать ввод номера. То есть если я ввожу номер 81234567891, чтобы он преобразовывался в +7 (123) 345-78-91. Я пробовал использовать плагин от github, но он не сработал. Так же на другом форуме нашел фрагмент кода ,но он так же не сработал, может есть какой-то фрагмент кода, который может помочь?
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/etPhone"
android:paddingTop="80dp"
android:paddingLeft="67dp"
android:layout_width="300dp"
android:layout_height="wrap_content"
android:hint="Телефон"
tools:ignore="MissingConstraints">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
android:maxLength="11"
/>
Ответы (2 шт):
Советую использовать эту библиотеку: вот эту
Установка:
repositories {
jcenter()
}
dependencies {
implementation 'com.redmadrobot:input-mask-android:6.0.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib:$latest_version'
}
Далее в ваш EditText ставите это и всё:
<EditText
android:inputType="number"
android:digits="0123456789 -".
... />
Задача распадается на 2 части:
Собственно парсинг введенного в свободном формате номера телефона на некий стандартизированный формат (в вашем случае на
+7 (123) 345-78-91- это т.н. международный формат). В общем случае это довольно сложная задача, поскольку в разных странах совершенно разные правила/умолчания по представлению телефонных номеров. Задача решается гугловской библиотекой libphonenumber. Пример парсинга номера 81961234567 здесь, обратите внимание, что если вы попытаетесь спарсить номер 81234567891 (как в вашем случае, то либа поймет, что в России нет кода 123 и не спарсит его верно :)Создание маски ввода номера телефона в этом самом международном формате, это уже проще задача. На гитхабе есть полно библиотек решающих эту задачу, например или здесь