自定义电话号码格式

时间:2014-02-19 13:19:57

标签: java android android-layout

在我的Android应用程序中,我想创建自己的电话号码格式,但仍无法找到执行此操作的方法。

我读过有关电话号码库等等但仍未找到办法执行此操作,因为所有库都可以正常使用USGermanFrench和其他格式。我想支持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) {

            }
        });

2 个答案:

答案 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));
  }