【发布时间】:2018-12-28 16:45:02
【问题描述】:
我需要按照(222) 222-2222 ext222222这种格式在android中的编辑文本中格式化电话号码
我创建了一个为我进行自动格式化的观察者。观察者工作正常并正确格式化电话号码。我唯一的问题是,当有人手动转到输入电话中的其他位置并开始删除或添加数字时,自动格式化不起作用。
任何想法如何解决这个问题。
这是我当前观察者的样子:
editText.addTextChangedListener(object : TextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
override fun afterTextChanged(s: Editable) {
val text = editText.text.toString()
val textLength = editText.text.length
if (text.endsWith("-") || text.endsWith(" ")) {
return
}
if (textLength == 1) {
if (!text.contains("(")) {
editText.setText(StringBuilder(text).insert(text.length - 1, "(").toString())
editText.setSelection(editText.text.length)
}
} else if (textLength == 5) {
if (!text.contains(")")) {
editText.setText(StringBuilder(text).insert(text.length - 1, ")").toString())
editText.setSelection(editText.text.length)
}
} else if (textLength == 6) {
editText.setText(StringBuilder(text).insert(text.length - 1, " ").toString())
editText.setSelection(editText.text.length)
} else if (textLength == 10) {
if (!text.contains("-")) {
editText.setText(StringBuilder(text).insert(text.length - 1, "-").toString())
editText.setSelection(editText.text.length)
}
} else if (textLength == 15) {
if (text.contains("-")) {
editText.setText(StringBuilder(text).insert(text.length - 1, " ext").toString())
editText.setSelection(editText.text.length)
}
}
}
})
【问题讨论】:
-
[stackoverflow.com/questions/14476983/…这个链接可以帮到你
标签: android kotlin android-edittext phone-number android-textwatcher