2014-02-19 412 views
0

在我的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) { 

      } 
     }); 
+0

這是你想要的唯一格式嗎? – Sanjeev

+0

你的代碼有一個永久循環。監聽器調用setText()和setText()調用監聽器... – lordmegamax

回答

1

也許這將有助於(PhoneNumberUtils):http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html

一個小例子:

String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber); 

根據該國的數量從規則這將自動格式化數。

查看PhoneNumberUtils以獲取更多選項。

+0

什麼都沒發生我試過 – pmb

+0

你可以放置你的代碼嗎?如果我們沒有看到您的代碼,我們無法幫助您。我放置的代碼就是一個例子。它可能不起作用,但你可以在網站上找到我給你如何使它工作。 –

+0

看我編輯的答案 – pmb

0

你建議立即進行刪除使用PhoneNumberUtils與所需Locale這樣的:

Locale localeRU = new Locale("ru","RU"); 
String formattedNumber = PhoneNumberUtils.formatNumber(unformattedNumber, PhoneNumberUtils.getFormatTypeForLocale (localeRU)); 

有一個查找適當的Localehere

@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)); 
    } 
+0

什麼是未格式化的數字?我只是改變了我的電話號碼,並有錯誤。 – pmb

+0

在你的情況下它的charSequence.toString() – alex

+0

它不需要字符串,但可編輯文本 – pmb