编辑文本格式
现在我有了一个带有 TextWatcher
的 EditText
,它将用户输入格式化为电话。例如,如果用户输入 89011234567
,它将被格式化为 +7 (901) 123-45-67
。
我想知道是否有任何方法可以扩展或实现一些类,例如 CharSequence
或 Editable
或任何其他类似的类,以使 EditText
显示格式化输出,但是当我调用 mEditText.getText().toString() 时,它会返回原始用户输入吗?
Now I've got an EditText
with TextWatcher
which formats user input as a phone. For example if users input is 89011234567
it will be formatted as +7 (901) 123-45-67
.
I wonder is there any way I can extend or implement some classes like CharSequence
or Editable
or any other like these to make EditText
display the formatted output, but when I will call mEditText.getText().toString()
it will return original users input?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以创建一个扩展标准 EditText 的类,然后重写 getText() 方法以返回您需要的内容。
然后您只需使用
MyEditText
而不是普通的 EditText。如果您不在其他地方(例如您的 TextWatcher)使用
getText()
方法,则此解决方案将起作用。You could create a class that extends the standard EditText, and then override the
getText()
method to return what you need.Then you just use the
MyEditText
instead of the normal EditText.This solution will work, if you don't use the
getText()
-method other places (like your TextWatcher).您可以将用户的输入存储到 edittext 的 tag 属性中,这样您就可以访问它,并且不会通过使用 setText 显示格式化数字来修改它!
You could store the user's input into the tag property of your edittext, this way you could access it and it wouldn't be modified by using setText to display the formatted number !