如何解决EditText 的电话号码格式
我正在使用库 input-mask-android 在用户输入时格式化文本。
我有一系列电话号码掩码。默认情况下,选择数组中的第一个掩码。用户可以使用 Spinner 选择不同的蒙版。但是,当用户使用 Spinner 选择蒙版时,它不会像他希望的那样工作。
假设掩码数组包含两个掩码:["+12 - ###","+34 - ###"]。如果用户选择第二个掩码,则在 EditText 中键入时将出现以下内容:
输入 5 将:
+34-512.
也就是输入后会自动放上之前掩码的关键字符。
我在 Kotlin 中的代码:
val listener: MaskedTextChangedListener = installOn(
etPhoneNumber!!,maskT,affineFormats,AffinityCalculationStrategy.PREFIX,object : ValueListener {
override fun onTextChanged(
maskFilled: Boolean,extractedValue: String,formattedValue: String
) {
logValueListener(maskFilled,extractedValue,formattedValue)
Log.e("CHANGE FORMAT:",affineFormats.toString())
}
}
)
maskT - 是选择的掩码 affineFormats - 存储最后一个掩码的动态数组。 任何建议将不胜感激。
解决方法
input-mask-android
图书馆作者在这里。
installOn
方法不适合您的需要。您必须在您的 MaskedTextChangedListener
上手动 initialise 一个 addTextChangedListener
,然后 call 一个 EditText
方法。在选择掩码时,您必须确保移除先前的侦听器(通过在您的 removeTextChangedListener
上调用 EditText
)。
installOn
方法不考虑可能有其他 TextWatcher
实例附加到您的 EditText
。因此,所有已安装的听众都试图接管文本,同时添加他们自己的“+12”和“+34”前缀。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。