Android手机号格式(XXX)-XXX-XXXX [英] Android Phone number format (XXX)-XXX-XXXX
问题描述
我想键入的EditText
电话号码格式为:(XXX)-XXX-XXXX
。但我没有得到这个任何解决方案。我成功地类型,但是当我使用退格键,再输入号码,然后这种格式不comes.Please给我的解决方案。我的code是
phoneEditText.addTextChangedListener(新TextWatcher(){
私人诠释keyDel;
@覆盖
公共无效onTextChanged(CharSequence中,诠释开始,诠释之前,
诠释计数){
phoneEditText.setOnKeyListener(新OnKeyListener(){
@覆盖
公共布尔onKey(视图V,INT关键code,KeyEvent的事件){
如果(键code == KeyEvent.KEY code_DEL)
keyDel = 1;
返回false;
}
});
如果(keyDel == 0){
。INT LEN = phoneEditText.getText()长度();
如果(LEN == 3
&功放;&安培; !(phoneEditText.getText()的toString()
。载(())){
phoneEditText.setText((
+ phoneEditText.getText()。的toString()。修剪()
+) - );
phoneEditText.setSelection(phoneEditText.getText()
。长度());
}否则,如果((LEN == 1 || LEN == 2 || LEN == 4 || LEN == 3)
&功放;&安培; (phoneEditText.getText()的toString()
。载(())){
如果(LEN == 4)
phoneEditText.setText(phoneEditText.getText()
的ToString()。修剪()
+) - );
phoneEditText.setSelection(phoneEditText.getText()
。长度());
}否则如果(LEN> 3及和放大器; LEN == 9){
phoneEditText.setText(phoneEditText.getText()
的ToString()。修剪()
+ - );
phoneEditText.setSelection(phoneEditText.getText()
。长度());
}否则如果(LEN> 9和;&安培; LEN == 14){
}
} 其他 {
keyDel = 0;
}
}
@覆盖
公共无效afterTextChanged(编辑为arg0){
}
@覆盖
公共无效beforeTextChanged(CharSequence的arg0中,INT ARG1,
INT ARG2,诠释ARG3){
}
});
看看的 PhoneNumberUtils ,获取更多的选择。
字符串formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);
根据该国的数量从规则这将自动格式化数字。
您也可以使用格式化就地编辑的文本:
PhoneNumberUtils.formatNumber(可编辑的文本,诠释defaultFormattingType);
或使用该参考的https://$c$c.google.com/ P / libphonenumber / :
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
尝试 {
联系号码swissNumberProto = phoneUtil.parse(swissNumberStr,US);
字符串手机= phoneUtil.format(edt.getText()。toString()方法,PhoneNumberFormat.NATIONAL)
}赶上(NumberParseException E){
通信System.err.println(NumberParseException被抛出:+ e.toString());
}
I want to type phone number in EditText
in format (XXX)-XXX-XXXX
. But I am not getting any solution for this. I succeeded to type but when I use backspace and again type number then this format not comes.Please give me solution. My code is
phoneEditText.addTextChangedListener(new TextWatcher() {
private int keyDel;
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
phoneEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL)
keyDel = 1;
return false;
}
});
if (keyDel == 0) {
int len = phoneEditText.getText().length();
if (len == 3
&& !(phoneEditText.getText().toString()
.contains("("))) {
phoneEditText.setText("("
+ phoneEditText.getText().toString().trim()
+ ")-");
phoneEditText.setSelection(phoneEditText.getText()
.length());
} else if ((len == 1 || len == 2 || len == 4 || len == 3)
&& (phoneEditText.getText().toString()
.contains("("))) {
if (len == 4)
phoneEditText.setText(phoneEditText.getText()
.toString().trim()
+ ")-");
phoneEditText.setSelection(phoneEditText.getText()
.length());
} else if (len > 3 && len == 9) {
phoneEditText.setText(phoneEditText.getText()
.toString().trim()
+ "-");
phoneEditText.setSelection(phoneEditText.getText()
.length());
} else if (len > 9 && len == 14) {
}
} else {
keyDel = 0;
}
}
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
});
Take a look at PhoneNumberUtils for more options.
String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);
This will automatically format the number according to the rules for the country the number is from.
You can also format Editable text in-place using:
PhoneNumberUtils.formatNumber(Editable text, int defaultFormattingType);
OR Use this refer to https://code.google.com/p/libphonenumber/:
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "US");
String Phone=phoneUtil.format(edt.getText().toString(), PhoneNumberFormat.NATIONAL)
} catch (NumberParseException e) {
System.err.println("NumberParseException was thrown: " + e.toString());
}
这篇关于Android手机号格式(XXX)-XXX-XXXX的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!