【发布时间】:2015-04-15 20:01:29
【问题描述】:
我正在尝试使用带有 TextWatcher 的 EditText 创建掩码。这个掩码需要格式化一个电话号码,但问题是这个掩码有两种情况。情况 1 掩码需要 13 位 (99)9999-9999,情况 2 需要 14 位 (99)99999-9999。我想在我输入数字的时候进行格式化。
我该怎么做?
我正在尝试这个。
//Activity
private EditText etPhone;
etPhone = (EditText)findViewById(R.id.etPhone());
etPhone.addTextChangedListener(new TelefoneMask(etPhone));
//TextWatcher
public class TelefoneMask implements TextWatcher {
private String current;
private EditText phone;
private StringBuilder mask = new StringBuilder();
public TelefoneMask(EditText phone) {
this.phone = phone;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public synchronized void afterTextChanged(Editable s) {
// mask1 -> (99)9999-9999 13 digits
// mask2 -> (99)99999-9999 14 digits
Integer size = s.length();
if(size == 10){
mask.append(s.toString());
mask.insert(0, "(");
mask.insert(3, ")");
mask.insert(8, "-");
}else if(size > 10){
mask.setLength(0);
mask.append(s.toString());
mask.insert(0, "(");
mask.insert(3, ")");
mask.insert(9, "-");
}
current = mask.toString();
phone.setText(current);
phone.setSelection(mask.length());
}
}
【问题讨论】:
标签: android android-edittext textwatcher