效果如上图(支持删除自动删除空格): 支持根据国家编码显示 中国 3+4+4 美国 3+3+4
主要代码如下:
public void onTextChanged(CharSequence s, int start, int before, int count) {
String contents = s.toString();
int length = contents.length();
String code = mTvCountryCode.getText().toString();
// 根据语言进行检验
if ((code.equals("+86"))|| !isChangeLanguage && language.startsWith("zh")) { // 86代表中国
if(length == 4){
if(contents.substring(3).equals(" ")){ // -
contents = contents.substring(0, 3);
mEdPhoneNum.setText(contents);
mEdPhoneNum.setSelection(contents.length());
} else { // +
contents = contents.substring(0, 3) + " " + contents.substring(3);
mEdPhoneNum.setText(contents);
mEdPhoneNum.setSelection(contents.length());
}
}
else if(length == 9){
if(contents.substring(8).equals(" ")){ // -
contents = contents.substring(0, 8);
mEdPhoneNum.setText(contents);
mEdPhoneNum.setSelection(contents.length());
} else {// +
contents = contents.substring(0, 8) + " " + contents.substring(8);
mEdPhoneNum.setText(contents);
mEdPhoneNum.setSelection(contents.length());
}
}
} else if ((code.equals("+1")) || !isChangeLanguage && language.startsWith("en")) { // 1代表美国
if(length == 4){
if(contents.substring(3).equals(" ")){ // -
contents = contents.substring(0, 3);
mEdPhoneNum.setText(contents);
mEdPhoneNum.setSelection(contents.length());
} else { // +
contents = contents.substring(0, 3) + " " + contents.substring(3);
mEdPhoneNum.setText(contents);
mEdPhoneNum.setSelection(contents.length());
}
}
else if(length == 8){
if(contents.substring(7).equals(" ")){ // -
contents = contents.substring(0, 7);
mEdPhoneNum.setText(contents);
mEdPhoneNum.setSelection(contents.length());
} else {// +
contents = contents.substring(0, 7) + " " + contents.substring(7);
mEdPhoneNum.setText(contents);
mEdPhoneNum.setSelection(contents.length());
}
}
}
}
article author: 林永真
Email:[email protected] [email protected]