在我的Android
应用程序中,我想创建自己的电话号码格式,但仍无法找到执行此操作的方法。
我读过有关电话号码库等等但仍未找到办法执行此操作,因为所有库都可以正常使用US
,German
,French
和其他格式。我想支持Russian
并且这些库不能正常工作。
唯一的方法是我必须创建自己的格式。
例如,如果我输入
79123456789
必须按照此处的格式进行格式化
+7(912)345-67-89
我找到了IOS
(SHSPhoneTextField)的库,但在Android
中我找不到。
有人能在这里告诉我好的解决方案吗?
mPhoneNumber.addTextChangedListener(new PhoneNumberFormattingTextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (charSequence.length() == 11)
mPhoneNumber.setText(PhoneNumberUtils.formatNumber(charSequence.toString()));
}
@Override
public void afterTextChanged(Editable editable) {
}
});
答案 0 :(得分:1)
也许这会有所帮助(PhoneNumberUtils):http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html
一个小例子:
String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber);
这将根据该号码所在国家/地区的规则自动格式化数字。
查看PhoneNumberUtils以获取更多选项。
答案 1 :(得分:0)
您应该PhoneNumberUtils
使用所需的Locale
,如下所示:
Locale localeRU = new Locale("ru","RU");
String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber, PhoneNumberUtils.getFormatTypeForLocale (localeRU));
查看相应的Locale
here。
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (charSequence.length() == 11)
Locale localeRU = new Locale("ru","RU");
mPhoneNumber.setText(PhoneNumberUtils.formatNumber(charSequence.toString(), localeRU));
}