【发布时间】:2017-10-17 08:00:03
【问题描述】:
我有一个 EditText,我想将在 EditText 中输入的任何数字格式化为美国电话号码格式,例如 1(123)123-123 所以如果用户自动输入数字 1 (将被添加,这也应该适用于删除。我能够添加一个文本观察器并设置逻辑,但在处理删除案例时我搞砸了。
这是我格式化第一个括号的代码逻辑,但如果我们删除括号,它将不起作用
editText.addTextChangedListener(new TextWatcher() {
public int after;
public int before;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
before = count;
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
after = count;
}
@Override
public void afterTextChanged(Editable s) {
editText.removeTextChangedListener(this);
if (before < after) {
if (s.length() == 4 && s.charAt(0) == '1') {
String formated = "1 (" + s.toString().substring(1, 4) + ")";
editText.setText(formated);
editText.setSelection(editText.getText().toString().length());
}
}
editText.addTextChangedListener(this);
}
});
【问题讨论】:
-
这里的一个选项是使用三个不同的框来输入区号、交换机和电话号码。
-
你在这里似乎很新,所以在这里,请提供一些你已经在使用的代码。
-
@Qohelet 我已经添加了代码,请检查一下,如果你能帮助我,请告诉我