use*_*619 2 android phone-number android-edittext
在我的应用程序中,我有一个editText,它将接受来自用户的电话号码,我的目标是,一旦用户输入电话号码就应该格式化(如通过应用文本更改的监听器),格式就好XXX-XXX-XXXX.
我把代码编写为
ePhone.addTextChangedListener(new TextWatcher() {
private Pattern pattern;
private Matcher matcher;
String a;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
boolean flag = true;
if (flag) {
if (((ePhone.getText().length() + 1) % 4) == 0)
{
if (ePhone.getText().toString().split("-").length <= 2)
{
ePhone.setText(ePhone.getText() + "-");
ePhone.setSelection(ePhone.getText().length());
}
}
a = ePhone.getText().toString();
} else {
ePhone.setText(a);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stus
}
});
Run Code Online (Sandbox Code Playgroud)
但是当用户想要从中删除一个数字时editText,它无法正常工作.提前致谢.
假设您想按照美国格式格式化电话号码.
+1 (###) ###-####,1 (###) ###-####,###-####,###-###-####,011 $
Run Code Online (Sandbox Code Playgroud)
以下将满足您的目的:
phoneEditText.addTextChangedListener(new TextWatcher() {
private boolean mFormatting; // a flag that prevents stack overflows.
private int mAfter;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
//called before the text is changed...
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
mAfter = after; // flag to detect backspace.
}
@Override
public void afterTextChanged(Editable s) {
// Make sure to ignore calls to afterTextChanged caused by the work done below
if (!mFormatting) {
mFormatting = true;
// using US formatting.
if(mAfter != 0) // in case back space ain't clicked.
PhoneNumberUtils.formatNumber(
s,PhoneNumberUtils.getFormatTypeForLocale(Locale.US));
mFormatting = false;
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果您需要特定于位置的服务,即每个位置,您需要该地点的特定格式(请参阅此链接).如果您只需要所需的格式,请在上面的代码片段中的line位置编写自定义函数.
PhoneNumberUtils.formatNumber(
s, PhoneNumberUtils.getFormatTypeForLocale(Locale.US));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10960 次 |
| 最近记录: |