以下是我正在尝试做的一个例子:
如果输入的电话号码为6123044356,则显示为(612)304-4356。如果客人按下退格键5次而不是删除最后输入的4个数字和短划线,请删除最后输入的5个数字。此时的电话号码将显示为(612)30。如果客人更多次点击退格键3,则会删除显示的最后3个数字,而不是括号。电话号码将显示为61。
有关如何执行此操作的任何建议吗?
答案 0 :(得分:1)
查看libphonenumber库。它中有AsYouTypeFormatter类,它将为您处理。
或者你可以使用基本上做同样事情的PhoneNumberFormattingTextWatcher。你可以像这样使用它:
editText.addTextChangeListener(new PhoneNumberFormattingTextWatcher());
答案 1 :(得分:0)
我会像拨号器那样做。这种方式最直观。
基本上当他们打字时,只要一个数字(例如1234567)达到7位数,就会将其拆分为123-4567(对于用户而言)。然后当它达到10位数时,123-4567890,将它分开,如(123)456-7890为他们。当它们达到11位数时,将格式更改为1-(234)567-8901。
当他们从11位数字中删除号码时,只要他们达到10位数,请更改回(123)456-7890。之后,只要位数小于10,就将格式更改回123-456789。保持它的格式,直到它们达到六位数,只需将其更改为123456。
当用户达到一定数量的数字时,通过更改数字与可识别表单之间的数字,它会巧妙地警告用户他们已经创建了一个实数,或者有太多或没有足够数字的数字是实数。
我建议使用以下阈值:
我希望这是有道理的。我不认为用户应该输入/删除任何额外的字符,如括号和短划线。它应该由应用程序完成。