Open IvanGalitskiy opened 6 years ago
Наткнулся на такую же проблему. Тут проблема в том, что при выставлении у EditText inputType=InputType.TYPE_CLASSPHONE устанавливается keyListener = android.text.method.DialerKeyListener. DialerKeyListener фильтрует все символы, которых не может быть в номере телефона, в том числе и ``. Чтобы обойти это ограничение можно сделать свой KeyListener и принудительно выставить его для EditText. Например, вот так (пример на kotlit):
import android.text.method.DialerKeyListener
class PhoneKeyListener : DialerKeyListener()
{
companion object
{
val instance by lazy { PhoneKeyListener() }
private val CHARACTERS = charArrayOf('0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' , '8' , '9' , '#' , '*' , '+' , '-' , '(' , ')' , ',' , '/' , 'N' , '.' , ' ' , ';' , '_')
}
override fun getAcceptedChars() : CharArray
{
return CHARACTERS
}
}
после инициализации EditText выставляем
phoneEditText.keyListener = PhoneKeyListener.instance
теперь EditText перестанет фильтровать _
и маска заработает
При использовании символа
_
в качестве placeholder-a он не отображается. При использовании любого другого все работает.