使用电话号码格式 NaN 屏蔽 EditText,就像 PhoneNumberUtils 中一样
我想让用户在 editText 中输入电话号码,以便在每次用户输入号码时动态更改格式。也就是说,当用户输入最多 4 位数字(例如 7144)时,editText 显示“714-4”。 我希望每当用户输入数字时,editText 就会动态更新为格式 ###-###-####。这怎么办?另外,我正在处理多个 editText。
I want to make user inputted phone number in an editText to dynamically change format every time the user inputs a number. That is, when user inputs up to 4 digits, like 7144, the editText shows "714-4".
I would like the editText to be dynamically updated to format ###-###-#### whenever the user inputs a digit. how can this be done? also, I am handling more than one editTexts.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
最简单的方法是使用内置的 Android PhoneNumberFormattingTextWatcher。
因此,基本上,您可以在代码中获取 EditText 并像这样设置文本观察器...
使用 PhoneNumberFormattingTextWatcher 的好处是,它将根据您的区域设置正确格式化您的号码条目。
Easiest way to do this is to use the built in Android PhoneNumberFormattingTextWatcher.
So basically you get your EditText in code and set your text watcher like this...
Nice thing about using PhoneNumberFormattingTextWatcher is that it will format your number entry correctly based on your locale.
上面的答案是正确的,但它适用于特定国家/地区。如果有人想要这种格式的电话号码(###-###-####)。然后使用:
在您的活动中声明
String lastChar = " "
。现在将这一行添加到您的 edittext 的 xml 中
即可。
已编辑:如果您希望编辑文本长度限制为 10 位数字,请在下面添加行:(
为 12,因为“-”将占用两次空格)
Above answer is right but it works with country specific. if anyone want such formatted phone number(###-###-####). Then use this:
Declare
String lastChar = " "
in your activity.Now add this line in xml of your edittext
That's all.
Edited: If you want your edittext lenght to limit 10 digits add line below also:
(It is 12 because "-" will take space two times)
只需将以下内容添加到电话号码的 EditText 即可获取格式化的电话号码(###-###-####)
Just add the following to EditText for Phone Number to get a formatted phone number(###-###-####)
Kotlin 中的 Android 动态掩码。这个工作正常并且严格符合电话号码掩码。您可以提供任何您想要的面具。
编辑1:我有一个新版本,可以锁定用户在键盘上键入的不需要的字符。
编辑2:单元测试
Dynamic Mask for Android in Kotlin. This one is working fine and strictly fitting the phone number mask. You can provide any mask you whish.
EDIT1: I have a new version that locks event the unwanted chars typed by the user on the keyboard.
EDIT 2: Unit tests
我的脚本,示例取自此处此处的说明
My script, example taken from here description here
上述解决方案没有考虑退格,因此当您在键入后删除一些数字时,格式往往会混乱。下面的代码纠正了这个问题。
The above solutions do not take backspace into consideration so when you delete some numbers after typing, the format tends to mess up. Below code corrects this issue.
此代码允许您使用掩码### - ### - ####(不含空格)输入电话号码,并且这里还修复了删除电话数字的问题:
布局:
This code allow you enter phone number with mask ### - ### - #### (without spaces) and also here is fixed the issue with deletion of phone digits:
Layout:
这是我的解决方案
如何在 Activity/Fragment 中运行(fe in onViewCreated):
Validatior 类:
布局:
结果是:
Here is my solution
How run in Activity/Fragment (f.e in onViewCreated):
Validatior class:
Layout:
Result is: