现在我有了一个EditText
将TextWatcher
用户输入格式设置为电话的格式。例如,如果用户输入是89011234567
,它将被格式化为+7 (901) 123-45-67
.
我想知道有什么方法可以扩展或实现一些类似CharSequence
或Editable
类似的类来EditText
显示格式化输出,但是当我调用mEditText.getText().toString()
它时会返回原始用户输入?
现在我有了一个EditText
将TextWatcher
用户输入格式设置为电话的格式。例如,如果用户输入是89011234567
,它将被格式化为+7 (901) 123-45-67
.
我想知道有什么方法可以扩展或实现一些类似CharSequence
或Editable
类似的类来EditText
显示格式化输出,但是当我调用mEditText.getText().toString()
它时会返回原始用户输入?
您可以创建一个扩展标准 EditText 的类,然后重写该getText()
方法以返回您需要的内容。
public class MyEditText extends EditText {
//Implement the methods that need implementation. Calling the method in the super class should do the trick
@Override
public Editable getText() {
//return an Editable with the required text.
}
}
然后你只需使用MyEditText
而不是普通的 EditText。
如果您不使用getText()
-method 其他地方(例如您的 TextWatcher),此解决方案将起作用。
您可以将用户的输入存储到您的 edittext 的 tag 属性中,这样您就可以访问它并且不会通过使用 setText 来修改它来显示格式化的数字!